【问题标题】:Laravel Polymorphic relationship getting different modelsLaravel多态关系获得不同的模型
【发布时间】: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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-13
      • 2021-01-27
      • 2022-01-23
      • 2018-02-16
      • 2018-04-18
      • 2016-07-12
      相关资源
      最近更新 更多