为在laravel中快速加载提供功能

问题描述

我分配了三个级别的类别来添加产品PrimarySecondaryFinal类别。添加产品时,用户可以将最终的类别ID保存在category_id字段中。现在,我要访问与Primary类别相关的最终类别的产品。

假设我具有电子主要类别,在此之下,我具有移动设备相机台式机 strong>,在Secondary类别中,我又拥有Final类别,例如Mobile中的三星 Galaxy 佳能,相机内的 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',$electronic_accessories);
                    });
          },'productCategory.secondaryCategory.primaryCategory' =>                   
            function($query) use($electronic_accessories) {
                  $query->where('name',$electronic_accessories);
          }])->take(2)->get();

此代码运行良好,但是我不想每次都想从Primary类别中获得产品时重复此代码。我想将此用作功能。我尝试在getPrimaryProduct()模型中使用Product创建函数,但是它说

在null上调用成员函数getPrimaryProduct()

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)