php - 有没有办法在 Laravel 5.2 中使用 Eloquent 一对多关系来选择列?

标签 php mysql laravel eloquent laravel-5

我使用的是 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/

相关文章:

php - 无法将上传的文件移动到 php 中的在线服务器

php - 在mysql查询后从php中的变量中删除行

php - 我是不是效率很低? mysqli 循环调用

java - 如何在 JSF 项目中获取文件资源

mysql - 需要转储mysql触发器

php - Laravel 中的单元测试 : Error when setting the Currently Authenticated User

php - 用于清理字符串的正则表达式

php - Laravel - 清除重定向::意图()

laravel - 如何在 laravel 项目中包含外部文件?

mysql - mysql select where 子句日期