我試圖讓我的頭在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}。 不知道它是如何影響性能的。 –