代码之家  ›  专栏  ›  技术社区  ›  Saeed Vaziry

用方法选择laravel雄辩中的特定列

  •  3
  • Saeed Vaziry  · 技术社区  · 6 年前

    我正在使用 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 对所有字段建模。我只想选择 身份证件 字段。

    我错过了什么?

    2 回复  |  直到 6 年前
        1
  •  2
  •   Jonas Staudenmeir    6 年前

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

    $posts = $request->user()->posts()->with('comments:id,post_id'); 
    
        2
  •  -1
  •   webdevtr    6 年前

    如果只需要一列,可以使用 ->pluck('id')

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