2017-03-03 10 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(); 
} 

お知らせを追加しますコメントのメソッド名がmorpMany()関数に渡された2番目のパラメータと一致することを確認してください。

なく、少なくとも最後に、あなたがそのスキーマ内の特別なフィールドを持っているのニーズにモーフィングするモデル:

あなたは伝統的なスキーマ構造の最後にそれらを配置する必要があります。

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

私は本当に重要かどうかわからないが、フィールド接頭辞がどのようにモーフィングしているメソッド名と一致するかに気づく。

+0

答えに感謝しています - それは完璧な意味合いを作り、私はそれを働かせることができました! – seekay

+0

あなたはそれを作ってうれしいです、あなたは大歓迎です。 –