提问者:小点点

雄辩-急于加载逆


主要问题是,我需要根据动态表渴望加载。我需要找到一种方法来产生一个雄辩的命令,可以通过以下方式给我一个集合...

  • 外径
    • 材料
      • 制造零件号
      • 制造零件号
      • 制造零件号
      • 制造零件号
      • 材料
        • 制造零件号
        • 制造零件号
        • 制造零件号
        • 制造零件号

        我想出的一个产生不理想结果的雄辩命令是:

        $tinker

        考虑到我的关系,这将产生以下集合:

        • 制造零件号
          • 外径
            • 材料
            • 外径
              • 材料
              • 外径
                • 材料

                当我在修补匠中玩耍时,我试图运行这个命令。它会产生一个错误,这是我一半预料到的。

                $tinker

                最终,我的问题是,我需要构建一个雄辩的命令,它可以以期望的方式加载结果。该命令将是动态的,从站姿来看,模型关系基于用户与站点的交互。想一想Amazon之类的东西,左边有复选框过滤器。我看到的方式是,我需要想出各种可能的模型组合,并使用所有这些数据创建相应的透视表。那对我来说似乎效率不高。。。

                有什么办法可以达到我的目标吗?

                我的给定模型定义如下:

                class ManufacturePartNumber extends Eloquent  
                {  
                  public function materials()  
                  {  
                    return $this->belongsToMany(\App\Models\Material::class);  
                  }   
                
                  public function outsideDiameters()  
                  {  
                    return $this->belongsToMany(\App\Models\OutsideDiameter::class);  
                  }  
                }
                
                class Material extends Eloquent  
                {  
                  public function manufacturePartNumbers()  
                  {  
                    return $this->belongsToMany(\App\Models\ManufacturePartNumber::class);  
                  }   
                }
                
                class OutsideDiameter extends Eloquent  
                {  
                  public function manufacturePartNumbers()  
                  {  
                    return $this->belongsToMany(\App\Models\ManufacturePartNumber::class);  
                  }  
                }
                

共2个答案

匿名用户

您可以快速加载关系的关系。IE:OutsideDiameter::with('ManufacturePartNumber','ManufacturePartNumber.materials'))-

您还可以动态加载关系,只需将保存关系的变量传递给with。

$relationships = ['materials', 'materials.manufacturePartNumbers'];
ManufacturePartNumber::with($relationships)->get();

因此,您可以根据需要添加到关系数组中。这有用吗?

匿名用户

正如我在这个过程中发现的,Eloquent不允许您查询不存在的关系。此问题使用三个表和相应的透视表来尝试使其正常工作。即使使用Elounce的hasManyThrough,它最多也只能用于三张桌子。

最终,我无法从无到有。我的解决方案是,我要处理n1问题。