为什么select无法在Laravel 5.7中雄辩地工作?

时间:2018-11-27 14:44:36

标签: eloquent eager-loading laravel-5.7

以下代码可以正常工作:

Post::with(['user'])
    ->get();

但是当我尝试使用select过滤它时,它在用户关系中返回null。

Post::with(['user' => function($query){
    $query->select('name');
}])
->select('id', 'slug', 'title', 'body', 'created_at')
->get();

用户模型内部的关系:

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

Post Model内部的关系:

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

2 个答案:

答案 0 :(得分:1)

您必须选择外键(posts.user_id)和所有者键(users.id):

Post::with(['user' => function($query){
    $query->select('id', 'name');
}])
->select('id', 'slug', 'title', 'body', 'created_at', 'user_id')
->get();

您还可以使用以下较短的版本:

Post::with('user:id,name')
    ->select('id', 'slug', 'title', 'body', 'created_at', 'user_id')
    ->get();

答案 1 :(得分:0)

可以请你

DB::table('users')->where('votes', '>', 100)->sharedLock()->get();