用方法在laravel eloquent中选择特定列

时间:2018-06-06 20:53:37

标签: php laravel eloquent

我正在使用laravel 5.6,我想让用户posts获得comments(仅id字段)

用户模型

public function posts()
{
    return $this->hasMany('App\Post');
}

发布模型

public function user()
{
    return $this->belongsTo('App\User');
}

public function comments()
{
    return $this->hasMany('App\Comment');
}

评论模型

public function post()
{
    return $this->belongsTo('App\Post');
}

在我的控制器中,我使用此代码来获取用户帖子及其评论

$posts = $request->user()->posts()->with(['comments' => function($query) {
    $query->select(['id']);
}]); 

但它不起作用......

当我发表评论$query->select(['id']);时,它可以正常工作但返回Comment模型所有字段。我只想选择id字段。

我在这里缺少什么?

2 个答案:

答案 0 :(得分:1)

您还必须选择外键列(匹配结果所需):

$posts = $request->user()->posts()->with('comments:id,post_id'); 

答案 1 :(得分:-1)

如果您只想使用一列,则可以使用->pluck('id')

https://laravel.com/docs/5.6/collections#method-pluck