【发布时间】:2017-07-07 01:50:51
【问题描述】:
我有一个名为“Area”的 Laravel 模型,其中包含“元素”。 元素可以是不同的模型(在本例中为 FreetextElement 和 CheckboxElement)。整个事情都与一个多态数据透视表挂钩, 其中包含 area_id、element_id 和 element_type。 基本关系工作正常。 例如,如果我说:
$area->freetextElements
然后我得到所有附加到该特定区域的 freetextElements。 我的问题是我想要一个关系函数,它可以获取附加到该区域的所有元素,而不管它们的模型如何。
以下是区域关系:
public function freetextElements()
{
return $this->morphedByMany(ElementFreetext::class, 'element', 'coaching_element_area_element');
}
public function checkboxElements()
{
return $this->morphedByMany(ElementCheckbox::class, 'element', 'coaching_element_area_element');
}
//find a better solution for this
public function elements()
{
return array_merge( $this->freetextElements->all(), $this->checkboxElements->all());
}
最后一个函数“元素”只是为了说明我想要实现的目标。
有什么建议吗?提前致谢。
最好的问候
【问题讨论】:
标签: php laravel-5 eloquent polymorphism