Php Laravel Eloquent使用筛选器获取嵌套子级

Php Laravel Eloquent使用筛选器获取嵌套子级,php,laravel,eloquent,Php,Laravel,Eloquent,我有这些关系: 产品组合-产品(归属) 产品-库存(属于库存) 在透视表中,我在产品和库存之间有一个数量字段,用于保存产品的数量 我想获得所有包含产品的产品组合,这些产品必须有库存(数量>0) 这是我的密码: /** * Get available combos. * * @param $query * @return mixed */ public function scopeAvailable($query) { return $query->where('sta

我有这些关系:

  • 产品组合-产品(归属)

  • 产品-库存(属于库存)

在透视表中,我在产品和库存之间有一个数量字段,用于保存产品的数量

我想获得所有包含产品的产品组合,这些产品必须有库存(数量>0)

这是我的密码:

/**
 * Get available combos.
 *
 * @param $query
 * @return mixed
 */
public function scopeAvailable($query)
{
    return $query->where('status', 1)
        ->whereHas('products.inventories', function ($query) {
            $query->where('quantity', '>', 0);
        });
}
如果所有产品缺货(数量=0),该代码将起作用。如果组合中的一个产品的数量大于0,它将不再工作


谢谢大家!

您可以从查询中反转逻辑。您可以检索数量不等于零的产品,而不是检索数量大于零的产品

return$query->where('status',1)
->whereDoesntHave('products.inventory',函数($query){
$query->where('数量',0);
});

更多信息请点击此处:

那么您想要的是所有产品均为
quantity>0
?@ChinLeung没错!