如何获取有关“ with”关系和主集合的特定列?

时间:2018-10-11 18:12:09

标签: php laravel eloquent

我知道我可以做到:

User::with(array('project' => function($query){
   $query->select('title');
}))->get()

我可以做到这一点:

User::get(['name', 'title', 'status', 'created_at']);

如何合并它们?这不起作用:

User::with(array('project' => function($query){
    $query->select('title');
}))->get(['name', 'title', 'status', 'created_at'])

理想情况下,我的结果形成为:

[{
  _id: 'ID',
  name: 'NAME',
  title: 'TITLE',
  status: 'STATUS',
  created_at: 'CREATED_AT',
  project: {
      _id: 'ID',
      title: 'PROJECT TITLE'
  }
  } ... ]

1 个答案:

答案 0 :(得分:5)

您必须选择关系的外键和本地键:

User::with(['project' => function($query) {
    $query->select('_id', 'title');
}])->get(['name', 'title', 'status', 'created_at', 'project_id'])

在Laravel 5.5及更高版本中,您可以使用以下代码:

User::with('project:_id,title')
    ->get(['name', 'title', 'status', 'created_at', 'project_id'])