我有一些表格:
Record
具有与Identification
,Inventory
和Price
相关的多态关系。 Inventory
与Metric
有关系,Price
与Currency
有关系。所以......
Record
hasMany
RecordRelations
到relations()
RecordRelation
morphTo
Identification
,Inventory
和Price
到relation()
Inventory
belongsTo
Metric
到metric()
Price
belongsTo
Currency
到currency()
如果我懒加载一切正常但我需要加载所有关系(我在数据表中显示它们);在尝试了很多之后,我能够加载最深的关系:
$builder->with([
'relations' => function($query) {
$query->with('relation.metric')->where('relation_type', '=', 'App\\Inventory');
}
]);
但是,如果我添加其他关系,我的所有关系都是空的......
$builder->with([
'relations' => function($query) {
$query->with('relation');
$query->with('relation.metric')->where('relation_type', '=', 'App\\Inventory');
$query->with('relation.currency')->where('relation_type', '=', 'App\\Price');
}
]);
似乎我出于某种原因无法" withWhere
"不止一次。有办法吗?
答案 0 :(得分:0)
将您的关系定义为以下
$builder->with([
'relations' => function($query) {
$query->addSelect('column_names');
},
'relation.metric' => function($query){
$query->addSelect('column_names')->where('_condition goes here');
},
'relation.currency' => function($query){
$query->addSelect('column_names')->where('_condition goes here');
}
]);
将columns_names替换为您要检索的列的名称。 和_condition与您想要应用的条件。