我使用的是 Laravel 5.2。我的数据库设置为:
social_logins
ID | social_id | provider
-----------------------------
1 | x | twitter
2 | y | facebook
3 | z | twitter
twitter_data
ID | social_id | some_value | another_value
-----------------------------------------------
1 | x | 100 | 600
2 | y | 200 | 100
3 | z | 100 | 400
我的social_logins模型的关系设置为:
public function twitterData()
{
return $this->hasMany('App\Models\TwitterData', 'social_id', 'social_id');
}
在我的 Controller 中,我想使用social_id 的外键检索某些列上的twitter_data。到目前为止我已经尝试过: $socialLogin->twitterData->select('some_value', 'another_value'); 但我刚刚收到一个错误,内容如下:
BadMethodCallException in Macroable.php line 74:
Method select does not exist.
如果我仅对一列使用像 $socialLogin->twitterData->lists('some_value');
这样的 lists()
调用,我就能够获取数据回来但我怎样才能让它适用于多列?
最佳答案
如果 lists()
适合您(顺便说一句,它在 5.3 中已被废弃并删除,请使用 pluck()
代替),那么使用多个参数也应该适合您:
$socialLogin->twitterData->pluck('some_column', 'another_column');
此外,您可以尝试在 get()
方法中传递列以仅获取您想要获取的列:
$data = $socialLogin->with('twitterData')->get(['some_column', 'another_column']);
关于php - 有没有办法在 Laravel 5.2 中使用 Eloquent 一对多关系来选择列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39426697/