【发布时间】:2020-12-26 00:09:22
【问题描述】:
我分配了三个级别的类别来添加产品Primary、Secondary 和Final 类别。添加产品时,用户可以在 category_id 字段中保存最终的类别 ID。现在我想访问与Primary 类别相关的最终类别的产品。
假设我有 Electronic 主要类别,在此之下,我有诸如 Mobiles、Camera、Desktop 等次要类别strong> 再次在 Secondary 类别中,我有 Final 类别,例如移动设备中的 Samsung、Galaxy、Canon、DSLR 里面的相机等等。现在我希望能够获取 Primary 类别中的所有产品。
我有以下代码用于预加载:
$electronic_accessories = "Electronic Device";
$electronic_accessories_product = Product::whereHas('productCategory', function($query)
use($electronic_accessories) {
$query->whereHas('secondaryCategory', function($query)
use($electronic_accessories) {
$query->whereHas('primaryCategory', function($query)
use($electronic_accessories){
$query->where('name', $electronic_accessories);
});
});
})
->with([
'productCategory' => function($query) use($electronic_accessories) {
$query->whereHas('secondaryCategory', function($query) use($electronic_accessories)
{
$query->whereHas('primaryCategory', function($query)
use($electronic_accessories){
$query->where('name', $electronic_accessories);
});
});
},
'productCategory.secondaryCategory'=> function($query) use($electronic_accessories)
{
$query->whereHas('primaryCategory', function($query)
use($electronic_accessories){
$query->where('name', $electronic_accessories);
});
},
'productCategory.secondaryCategory.primaryCategory' =>
function($query) use($electronic_accessories) {
$query->where('name', $electronic_accessories);
}])->take(2)->get();
此代码运行良好,但我不想每次从Primary 类别中获取产品时都重复此代码。我想将其用作功能。我尝试在Product 模型中使用getPrimaryProduct() 制作函数,但它说
在 null 上调用成员函数 getPrimaryProduct()
【问题讨论】:
标签: php laravel relationship eager-loading eloquent-relationship