其中关系值高于实体值与Eloquent

时间:2015-11-02 12:21:40

标签: eloquent laravel-5.1

我有两个实体; PartPartStock。他们之间有一对一的关系:

零件模型:

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', '>', ???);
});

我可以在某种程度上合并这两个范围吗?

1 个答案:

答案 0 :(得分:1)

请参阅Eloquent: Querying Relations

Part::whereHas('PartStock', function ($query) {
        $query->whereRaw('PartStock.count > Part.reorder');
    })->get();