我有一个使用Baum的Category模型。每个类别都有active_products字段,该字段包含该类别中的多个活动产品。我需要的是,我可以获得一些active_products,不仅可以用于类别,还可以用于所有后代。
目前我已经实现了这个目标:
$active_products = Category::select('active_products')
->where('lft', '>=', $category->lft)
->where('lft', '<=', $category->rgt)
->where('enabled', 1)
->lists('active_products');
我返回$ active_products的array_sum。
但有时在foreach中使用它并且它可以产生大量查询。我无法弄清楚如何解决这个问题。我可以急于加载自定义查询而不是关系吗?
编辑#1:我实际上不需要关系。我只需要每个类别都有类似active_products_count属性的东西,或者某个值是类别本身及其后代的active_products
字段之和。我希望它表现得像这样:
Category::where('somecondition)->with('active_products_count);
因此,当我循环浏览类别时,我不需要进行其他查询?有什么想法可以做到这一点? (实际上不必使用“with”和eager-loading,但这是我能提出的最接近的事情)