我有两个实体; Part
和PartStock
。他们之间有一对一的关系:
零件模型:
public function partStock()
{
return $this->hasOne('App\PartStock');
}
PartStock模型:
public function part()
{
return $this->belongsTo('App\Part');
}
如何编写Part
的全局范围,其中PartStock
关系和Part
实体本身具有where过滤器?
基本上是这样的:
$query->where('PartStock.count', '>', 'Part.reorder');
零件表:
`id` int(10)
`category_id` int(10)
`description` varchar(255)
`value` varchar(255)
`reorder` int(10)
part_stock表:
`id` int(10)
`part_id` int(10)
`count` int(11)
如果可能的话,我无法绕过头:
// here I have part reorder, but not the partstock count
$query->where(???, '>', 'reorder');
// here I have partstock count, but not the part reorder
$query->whereHas('partStock', function($q) {
$q->where('count', '>', ???);
});
我可以在某种程度上合并这两个范围吗?
答案 0 :(得分:1)
请参阅Eloquent: Querying Relations。
Part::whereHas('PartStock', function ($query) {
$query->whereRaw('PartStock.count > Part.reorder');
})->get();