2017-03-03 57 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

我很高兴你做到了,不客气。 –