Php Laravel多态关系得到不同的模型

Php Laravel多态关系得到不同的模型,php,laravel-5,eloquent,polymorphism,Php,Laravel 5,Eloquent,Polymorphism,我有一个叫做“区域”的拉威尔模型,其中包含“元素”。 元素可以是不同的模型(在本例中为FreetextElement和CheckBoxeElement)。整个过程都与一个多态数据透视表相连接, 其中包含区域id、元素id和元素类型。 基本关系运作良好。 例如,如果我说: $area->freetextElements 然后我得到所有附加到该特定区域的freetextElements。 我的问题是我想要一个关系函数,它获取附着到该区域的所有元素,而不管它们的模型如何 以下是这些关系的领域

我有一个叫做“区域”的拉威尔模型,其中包含“元素”。 元素可以是不同的模型(在本例中为FreetextElement和CheckBoxeElement)。整个过程都与一个多态数据透视表相连接, 其中包含区域id、元素id和元素类型。 基本关系运作良好。 例如,如果我说:

$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());
}
最后一个函数“elements”只是为了说明我要实现的目标

有什么建议吗?提前谢谢


致以最诚挚的问候

因此我找到了解决此问题的方法。这不是最干净的解决方案。 所以我仍然愿意接受任何额外的反馈,但我想我把这个留给其他人

我只是为透视表条目创建了一个模型。Area->Elements是与透视表条目的关系,透视表模型通过其自身的关系与各个元素相关。现在我可以通过说:区域->元素->元素来链接关系。这不是最优的,但它完成了任务