【问题标题】:Laravel / Eloquent - Many to many pivot model with morphToMany relationLaravel / Eloquent - 具有 morphToMany 关系的多对多枢轴模型
【发布时间】:2015-07-06 10:53:14
【问题描述】:

我设置了多对多关系,并且还对数据透视表进行了建模。此外,在枢轴模型中,我设置了 morphToMany 关系。

这是设置的图解表示。

我遇到的问题是我无法在数据透视模型上引入 joins 属性。

我的 Dimension 模型中有此代码;

return $this->belongsToMany('Datasource', 'dimension_datasource')->withPivot('joins');

但我收到此错误:未知列 dimension_datasource.joins

我尝试在数据透视模型上设置访问器,但由于出现相同的错误,它似乎被忽略了。

谢谢,

杰夫

【问题讨论】:

  • 请展示您的模型,您是否为数据透视表设置了模型?您是如何在 dimension_datasource 表上设置变形关系的?
  • 是的,有一个 Dimension_datasource_pivot 模型和一个对应的 Dimension_datasource 类,它只有一个方法:newPivot,它返回一个 Dimension_datasource_pivot 的实例。对于 morph 关系,我有一个名为“joinables”的数据透视表,其中 Dimension_datasource_pivot 作为 joinable_type,如果适用。
  • 您的其他模型是否在扩展您的新基础枢轴模型?
  • 是的,DImension 和 Datasource 都扩展了 Dimension_datasource。
  • 您应该按字母顺序排列您的数据透视表名称。所以应该是datasource_dimension

标签: laravel eloquent relationships


【解决方案1】:

这正在工作。我很遗憾地承认我不是 100% 确定为什么,但我相当肯定这与 joinables 表的 joinable_type 列中完全限定的类名中的反斜杠的字符编码有关。因此,如果您遇到同样的问题,请尝试查看那里(互联网上其他地方有迹象表明 Laravel 应该转义这些反斜杠,并且还有模糊的服务器设置相关建议)。

对不起,我不能更具体!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-21
    • 1970-01-01
    • 2019-07-27
    • 2016-08-25
    • 2021-08-12
    • 1970-01-01
    • 1970-01-01
    • 2019-08-20
    相关资源
    最近更新 更多