我正在使用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');
}
在我的控制器中,我想使用social_id的外键检索某些列上的twitter_data。到目前为止,我尝试过: $ socialLogin-> twitterData->选择(' some_value',' another_value'); 但我得到的错误是:
BadMethodCallException in Macroable.php line 74:
Method select does not exist.
如果我只使用lists()
这样的$socialLogin->twitterData->lists('some_value');
调用只能查看一个列,那么我可以将数据恢复,但如何才能使其适用于多列?
答案 0 :(得分:2)
如果lists()
适合你(顺便说一句,它在5.3中被删除和删除,请改用pluck()
),那么使用多个参数也适合你:
$socialLogin->twitterData->pluck('some_column', 'another_column');
此外,您可以尝试在get()
方法中传递列,以仅获取您想要获取的列:
$data = $socialLogin->with('twitterData')->get(['some_column', 'another_column']);