有没有办法在laravel 5.2中使用雄辩的一对多关系来选择列?

时间:2016-09-10 13:45:31

标签: php mysql laravel eloquent laravel-5.2

我正在使用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');调用只能查看一个列,那么我可以将数据恢复,但如何才能使其适用于多列?

1 个答案:

答案 0 :(得分:2)

如果lists()适合你(顺便说一句,它在5.3中被删除和删除,请改用pluck()),那么使用多个参数也适合你:

$socialLogin->twitterData->pluck('some_column', 'another_column');

此外,您可以尝试在get()方法中传递列,以仅获取您想要获取的列:

$data = $socialLogin->with('twitterData')->get(['some_column', 'another_column']);