我有一个带有关系的模型,我只想返回与查询匹配的部分关系。
但是,每次关系恢复时,我都无法实现。
我的模特是
全部
public function etageLots()
{
return $this->hasMany('App\Models\Copro\EtageLot');
}
EtageLot
public function lot()
{
return $this->belongsTo('App\Models\Copro\Lot');
}
public function fractions()
{
return $this->hasMany('App\Models\Copro\Fraction','etage_lot_id');
}
派别
public function etageLot()
{
return $this->belongsTo('App\Models\Copro\EtageLot','etage_lot_id');
}
public function type()
{
return $this->belongsTo('App\Models\Copro\Type');
}
然后输入
public function fractions()
{
return $this->hasMany('App\Models\Copro\Fraction');
}
这是我尝试的查询:
$lots2 = Lot::whereHas('etageLots.fractions.type', function ($query) {
$query->where('types.surface_ascenseur','>',0);
})
->with("etages.coeff")
->where('lots.id', '=', 1)
->first();
dd($lots2->etageLots->first()->fractions);
(即使types.surface_ascenseur> 0,也要返回所有分数)
$lots2 = Lot::with(['etageLots.fractions.type' => function ($query) {
$query->where('types.surface_ascenseur','>',0);
}])
->with("etages.coeff")
->where('lots.id', '=', 1)
->first();
dd($lots2->etageLots->first()->fractions)
(即使types.surface_ascenseur> 0,也要返回所有分数)
$lots2 = Lot::with('etageLots.fractions.type',"etages.coeff")
->whereHas('etageLots.fractions.type', function ($q) {
$q->where('surface_ascenseur','>',0);
})
->where('lots.id', '=', 1)
->first();
dd($lots2->etageLots->first()->fractions);
(即使types.surface_ascenseur> 0,也要返回所有分数)
$lots2 = Lot::with(['etageLots.fractions' => function ($query) {
$query->whereHas('type', function ($q) {
$q->where('surface_ascenseur','>',0);
});
}
])
->with("etages.coeff")
->where('lots.id', '=', 1)
->first();
dd($lots2->etageLots->first()->fractions)
(返回正确数量的分数,但没有“类型”关系,我需要它)
如何仅返回带有fractions.type.surface_ascenseur> 0的分数?
感谢您的帮助
答案 0 :(得分:1)
您与最后一个非常接近。试试:
Lot::with([
'etageLots.fractions' => function ($query) {
$query->whereHas('type', function ($q) {
$q->where('surface_ascenseur','>',0);
})
->with('type'); // <- add this!
}
])
->with("etages.coeff")
->where('lots.id', '=', 1)
->first();