我试图让我的头在Laravel 5.3中我的第一个多态关系。Laravel 5.3多态关系
我试图实现的关系是'编辑'将有许多'元素'每个元素将是它自己的模型,并有一个顺序。因此,例如我将有一个'ElementText','ElementImage','ElementButton'模型,然后'编辑'将有不同的元素分配给它。
这就是为什么我认为我需要一个多态关系。我不想在'Editorials'模型中为每个元素类型创建多个关系,我希望能够获取所有'Elements',而不管其类型如何,并按顺序获取它。
我认为这个想法的解决办法是有一个与列的“editorial_element”数据透视表像
editorial_id - integer
order - integer
element_id - integer
element_type - string
类似于laravel文档的morphToMany
的例子,但在这个例子,你需要指定模型变形。
所以我也想知道如果我应该在我的编辑模型中使用morphTo()方法。
public function elements() {
return $this->morphTo();
}
但我认为,这意味着我将不得不_type
和_id
列添加到我的社论表这将是向后(允许每个编辑一个元素)
任何想法,如果我可以将我需要的关系或者我接近它错了?
我明白了,我是否认为'元素'模型需要手动更新并且不再接受使用这种方法的attach(),detach()方法? –
'BelongsTo()'有'associate()'和'disassociate()',但我想不出你创建它们后会操纵这些关系的情况。我唯一能看到的变化就是'编辑 - hasMany - Element',不幸的是似乎没有'sync()'方法,但你可以'saveMany()'。 –
在早点下班回家之前,我很快就采取了这种方法。我没有使用视图,但做了以下工作 $ editorial = \ App \ Editorials :: with('elements') - > first(); ($ editorial-> elements as&$ elements){ \t \t $ elements-> content; \t}。 不知道它是如何影响性能的。 –