2017-02-17 116 views
2

我有一个名为“Area”的Laravel模型,其中包含“Elements”。 元素可以是不同的模型(在这种情况下是FreetextElement和CheckboxElement)。整个事物与一个多态枢轴表 有关,它包含area_id,element_id和element_type。 基本关系正常工作。 如果我的例子说:Laravel获取不同模型的多态关系

$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()); 
} 

最后一个函数“元素”仅仅是为了说明什么,我想要的目的。

有什么建议吗?提前致谢。

最好的问候

回答

0

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

我只是为数据透视表条目创建了一个模型。 Area-> Elements是与透视表条目的关系,并且该透视表模型通过它自己的关系与各个元素相关。现在我可以通过说:区域 - >元素 - >元素来链接关系。这不是最佳的,但它完成了工作。