主要问题是,我需要根据动态表渴望加载。我需要找到一种方法来产生一个雄辩的命令,可以通过以下方式给我一个集合...
我想出的一个产生不理想结果的雄辩命令是:
$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);
}
}
您可以快速加载关系的关系。IE:OutsideDiameter::with('ManufacturePartNumber','ManufacturePartNumber.materials'))-
您还可以动态加载关系,只需将保存关系的变量传递给with。
$relationships = ['materials', 'materials.manufacturePartNumbers'];
ManufacturePartNumber::with($relationships)->get();
因此,您可以根据需要添加到关系数组中。这有用吗?
正如我在这个过程中发现的,Eloquent不允许您查询不存在的关系。此问题使用三个表和相应的透视表来尝试使其正常工作。即使使用Elounce的hasManyThrough,它最多也只能用于三张桌子。
最终,我无法从无到有。我的解决方案是,我要处理n1问题。