将模型(即评论)链接到许多其他模型(即帖子、个人资料)

Linking a Model (ie. comment) to many other Models (ie. post, profile)

我正在使用 Laravel 构建一个 PHP 应用程序,其中我有一个 Comment 模型和许多其他可以附加 Comment 的模型。

例如,一个 Profile 可以有多个 Comment 但一个 Post 可以有多个 Comment.

我应该将 Comment 分成两个模型(ProfileCommentPostComment)还是应该像这样将它们放在一起?

class Comment {

    public function user()
    {
        return $this->hasOne('User');
    }

    public function profile()
    {
        return $this->belongsTo('Profile');
    }

    public function post()
    {
        return $this->belongsTo('Post');
    }

}

如果我将它们放在一起,那么在数据库级别我应该如何管理 comments 表?

我正在考虑拥有以下列:

integer: id - auto-incrementing id
integer: user_id - the user id
integer: foreign_id - profile/post id
varchar: type - which model? profile or post?
varchar: content - the actual comment

这是错误的方法吗?

如果您想使用 1 table,您将需要对评论模型进行变形。 如果你不想使用 morph,请分开。

我认为如果您要使用问题中的架构,您将使用变体。

我不知道哪里需要制作更多 tables,因为所有评论都将具有相同的结构(id,user_id(作者),评论)

所以在这种情况下,您只需要使其变形(可标记)即可。