【问题标题】:Select specific column in laravel eloquent's with method在 laravel eloquent 的 with 方法中选择特定的列
【发布时间】:2018-06-07 05:56:50
【问题描述】:

我正在使用laravel 5.6,我想通过comments 获取用户posts(仅限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');
}

在我的控制器中,我使用此代码通过他们的 cmets 获取用户帖子

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

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

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

我在这里缺少什么?

【问题讨论】:

  • 你有什么错误吗?
  • @MasoudHaghbin 不,它返回 null
  • 试试 $query->select('id')
  • @MasoudHaghbin 已经尝试过...
  • 这个 $request->user()->posts->with(['cmets' => function($query)

标签: php laravel eloquent


【解决方案1】:

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

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

【讨论】:

  • 如果您需要的列只有name,它不起作用!
【解决方案2】:

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

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

【讨论】:

  • pluck 只获取字段的值。
猜你喜欢
  • 2016-11-05
  • 2017-02-22
  • 1970-01-01
  • 2013-11-20
  • 2020-04-07
  • 2015-05-08
  • 2021-01-21
  • 1970-01-01
相关资源
最近更新 更多