通过自定义数据透视类型获取所有数据透视 table 列
Fetching all pivot table columns via custom pivot type
我有一个多对多关系,其中主元 table 有大约 20 个额外的列。我正在使用自定义数据透视表 class,并且当在关系上访问 -> 数据透视表 属性 时,我已成功将代码设置为 return 该 class 的一个实例, 例如
$supplier->products->pivot
returns 自定义枢轴 class.
但是,当想要访问数据时,我可以在 belongsToMany
关系中手动定义枢轴 class(顺便扩展枢轴)的所有单独属性,如下所示:
return $this->belongsToMany(Product::class, ['prop1', 'prop2', 'prop3'])
...但是,如何在不手动定义它们的情况下检索 class 的所有数据透视表数据,因为它将关系声明与 class 联系得非常紧密?这可能吗。如果不是,它将使可维护性成为一个 PITA!理想情况下,如果 withPivot 有一个标志来获得这一切,那就太好了!
在我的情况下,我发现将所有数据分离到一个单独的 table 和模型中并在数据透视 table 中添加一个外键到附加的 table 更容易记录。这使我可以在 Laravel 中使用 'normal' 模型处理,这意味着我不必为这样的问题而烦恼!
我的用例是一个多对多的产品和供应商模式,每个供应商都有自己的产品数据,即价格、库存、运费/时间等,所以我移动了所有这些从枢轴到 SupplierProduct 模型。
我会把这个问题留在这里,因为虽然这不是问题的直接答案(我担心答案是 'no'),但这是一个可行的解决方案,可以节省相当多的钱有点编码挫败感!
我有一个多对多关系,其中主元 table 有大约 20 个额外的列。我正在使用自定义数据透视表 class,并且当在关系上访问 -> 数据透视表 属性 时,我已成功将代码设置为 return 该 class 的一个实例, 例如
$supplier->products->pivot
returns 自定义枢轴 class.
但是,当想要访问数据时,我可以在 belongsToMany
关系中手动定义枢轴 class(顺便扩展枢轴)的所有单独属性,如下所示:
return $this->belongsToMany(Product::class, ['prop1', 'prop2', 'prop3'])
...但是,如何在不手动定义它们的情况下检索 class 的所有数据透视表数据,因为它将关系声明与 class 联系得非常紧密?这可能吗。如果不是,它将使可维护性成为一个 PITA!理想情况下,如果 withPivot 有一个标志来获得这一切,那就太好了!
在我的情况下,我发现将所有数据分离到一个单独的 table 和模型中并在数据透视 table 中添加一个外键到附加的 table 更容易记录。这使我可以在 Laravel 中使用 'normal' 模型处理,这意味着我不必为这样的问题而烦恼!
我的用例是一个多对多的产品和供应商模式,每个供应商都有自己的产品数据,即价格、库存、运费/时间等,所以我移动了所有这些从枢轴到 SupplierProduct 模型。
我会把这个问题留在这里,因为虽然这不是问题的直接答案(我担心答案是 'no'),但这是一个可行的解决方案,可以节省相当多的钱有点编码挫败感!