【发布时间】:2021-09-30 17:54:34
【问题描述】:
我想创建一个有点多态的 laravel morphTo。
我想创建多个“维度”多态属性,但没有必要为它们的值(宽度、长度、高度、重量)创建四个单独的(相同的)表。
问题是,我只是偶然发现了它是如何创建链接的,我不太确定如何指定维度的类型。
我正在考虑创建一个抽象的“维度”模型,然后用继承的“宽度”、“长度”、“高度”和“重量”模型包装它,这些模型将在调用父 __constructor($属性)
我以为我找到了解决方案,但它似乎不起作用。我在我的 Width() 类(继承自 DimensionAbstract)中创建了一个“widthable”方法,并分别为其命名和 id 字段“dimensionable_name”、“dimensionable_id”。例如:
public function widthable()
{
return $this->morphTo(__FUNCTION__, 'dimensionable_type', 'dimensionable_id');
}
但它抱怨未找到 widthable_id 列。是否有某种方法可以键入一个 morphOne(或相同的伪变体)取决于 morphed 类的属性之一? (在我的例子中,我使用一个枚举来表示“轴”,它可以包括“宽度”、“长度”、“高度”或“重量”——然后我在构造函数中设置了该属性) 我试图在其他每个继承的类中为长度、高度和重量做类似的事情。
【问题讨论】:
标签: php laravel eloquent polymorphism polymorphic-associations