Laravel 5.4雄辩地选择

时间:2019-03-10 02:38:09

标签: php laravel eloquent

在我长时间描述问题之前,简短而又甜蜜: Laravel 5.4

理论上,应该使用用户的相应名称和ID返回文件。

return Files::with(['user' => function($query) {
    $query->select('id', 'name');
  }])->select('filename', 'uid')->paginate();

但是,查询中缺少ID。

select `filename`, `uid` from `files` limit 15 offset 0
select `id`, `name` from `users` where `users`.`id` in ('')

模型中的关系可用

//User.php
public function files()
{
  return $this->hasMany('App\Files');
}
//Files.php
public function user()
{
  return $this->hasOne('App\User', 'id', 'user_id');
}

有人知道为什么吗?毕竟,没有办法将ID作为参数传递。

1 个答案:

答案 0 :(得分:1)

仅当父查询选择外键列时,紧急加载才能工作:

return Files::with(['user' => function($query) {
    $query->select('id', 'name');
}])->select('filename', 'uid', 'user_id')->paginate();
                                ^^^^^^^