在嵌套关系期间仅选择某些列
Selecting only certain columns during nested relation
如果我有一个查询:MyModal::with('relation1.relation2')->get()
,我如何限制从relation1
中选择的字段?
MyModal::with('relation1:column1,column2')->with('relation1.relation2')->get()
选择 relation1
上的所有字段。
MyModal::with('relation1:column1,column2.relation2')->get()
给出一个 SQL 错误,因为它试图找到一个名为 column2.relation2
.
的列
我不确定还有什么其他方法,这是否可能,或者获取嵌套关系是否总是获取第一个关系上的所有字段?
你应该在关系 select 之后做第 select 列:
MyModal::with(['relation1.relation2', 'relation1:column1,column2'])->get()
或者您可以在模型本身中定义它
public function relation1()
{
return $this->hasOne(Relation1::class)->select(['column1', 'column2']);
}
Model::query()
->with(array('relation1' => function($query) {
$query->select('column1', 'column2');
},'relation2' => function($query) {
$query->select('column1', 'column2');
}))
->get();
如果我有一个查询:MyModal::with('relation1.relation2')->get()
,我如何限制从relation1
中选择的字段?
MyModal::with('relation1:column1,column2')->with('relation1.relation2')->get()
选择 relation1
上的所有字段。
MyModal::with('relation1:column1,column2.relation2')->get()
给出一个 SQL 错误,因为它试图找到一个名为 column2.relation2
.
我不确定还有什么其他方法,这是否可能,或者获取嵌套关系是否总是获取第一个关系上的所有字段?
你应该在关系 select 之后做第 select 列:
MyModal::with(['relation1.relation2', 'relation1:column1,column2'])->get()
或者您可以在模型本身中定义它
public function relation1()
{
return $this->hasOne(Relation1::class)->select(['column1', 'column2']);
}
Model::query()
->with(array('relation1' => function($query) {
$query->select('column1', 'column2');
},'relation2' => function($query) {
$query->select('column1', 'column2');
}))
->get();