Laravel 口才好。将投影添加到相关模型
Laravel Moloquent. Add projection to related model
我有一个关于关系的查询。
$dbQuery = $this->someModel
->where('user_id', '<>', Auth::id())
->with(['questions'])
->get(['title', 'status', 'expired_at']);
get()
方法中的字段列表为 selected 数据的顶级定义了 selected 字段列表。但我还需要为 questions
关系添加一个投影。我如何才能 select 只有 questions._id
和 questions.description
?
我试过将它添加到 get()
列表中,但它不能以这种方式工作。
您可以使用带有 with
的闭包来仅选择某些列:
Model1::with(['model2' => function($query){
$query->select('column1','column2');
}])->get();
我根据@namelivia 的回答找到了适合我的解决方案。它现在适用于 select
,但适用于 project
。
Model1::with(['model2' => function($query){
$query->project([
'column1' => 1,
'column2' => 1,
'foreign_key' => 1 /* can not be excluded. */
]);
}])->get();
我有一个关于关系的查询。
$dbQuery = $this->someModel
->where('user_id', '<>', Auth::id())
->with(['questions'])
->get(['title', 'status', 'expired_at']);
get()
方法中的字段列表为 selected 数据的顶级定义了 selected 字段列表。但我还需要为 questions
关系添加一个投影。我如何才能 select 只有 questions._id
和 questions.description
?
我试过将它添加到 get()
列表中,但它不能以这种方式工作。
您可以使用带有 with
的闭包来仅选择某些列:
Model1::with(['model2' => function($query){
$query->select('column1','column2');
}])->get();
我根据@namelivia 的回答找到了适合我的解决方案。它现在适用于 select
,但适用于 project
。
Model1::with(['model2' => function($query){
$query->project([
'column1' => 1,
'column2' => 1,
'foreign_key' => 1 /* can not be excluded. */
]);
}])->get();