我有一个多对多的关系,其中数据透视表有大约20个额外的列。我正在使用自定义数据透视表类,并且我已成功设置代码,以便在关系上访问 - > pivot属性时返回该类的实例,例如。
$supplier->products->pivot
返回自定义数据透视表类。
但是,当想要访问数据时,我可以在belongsToMany
关系中手动定义pivot类的所有单个属性(顺便扩展Pivot),如下所示:
return $this->belongsToMany(Product::class, ['prop1', 'prop2', 'prop3'])
...但是,如何在没有手动定义类的情况下检索类的所有数据透视数据,因为它将关系声明与类非常接近?这可能吗。如果没有,它将使PITA的可维护性成为可能!理想情况下,如果withPivot只有一个标志来完成所有操作,那真的很不错!
答案 0 :(得分:0)
在我的情况下,我发现将所有数据分成单独的表和模型更容易,并将数据透视表中的外键添加到附加表记录中。这允许我在Laravel中使用“普通”模型处理,这意味着我不必处理这样的问题!
我的用例是产品和供应商的模式,具有多对多,每个供应商都有自己的产品数据,即价格,库存,运输成本/时间等,所以我把所有这些都从转向SupplierProduct模型。
我会在这里留下这个问题,因为虽然这不是问题的直接答案(我担心答案是'不'),但这是一个可行的解决方案,可以节省相当多的编码挫折!