2017-03-03 87 views
0

這是一個非常基本的問題,但試圖圍繞着名稱相似的模型/表的首選命名約定。Laravel命名約定與相似的模型名稱

模型「任務」可以有很多「評論」這樣的表會 - 任務 - 評論(與TASK_ID外鍵)

不過,我有另一種模式「郵報」也將需要一個「評論」這當然是從評論的任務

在這種情況下分開,不會一個通常與 去 - 任務& TaskComment(模型)/任務& task_comments(數據庫表) - 發佈& PostComment(模型)/帖子& post_comments(數據庫表)

或其他約定?

回答

1

如果你使用多態關係,你甚至可以使一個評論有自己的評論(如回覆系統)。

在你想有意見,你需要添加這樣的方法模型:

public function comments() { 
    return $this->morphMany(Comment::class, 'commentable'); 
} 

然後在您的評論的模式,你只需要添加

public function commentable() { 
    return $this->morphTo(); 
} 

注意到它是多麼重要您在Comment中的方法名稱與傳遞給morpMany()函數的第二個參數匹配。

最後但並非最不重要的,在你變身到需要的模式有其模式特殊領域:

你必須把它們放在了傳統的模式結構的末尾:

// Your comment dedicated schema 
$table->integer('commentable_id'); 
$table->string('commentable_type'); 

我真的不知道它是否重要,但注意字段前綴與我們正在變形的方法名稱是如何匹配的。

+0

感謝您的回答 - 這是非常有意義的,我能夠得到它的工作! – seekay

+0

我很高興你做到了,不客氣。 –