需要在 laravel 中创建评论的逻辑
In need of a logic to create comments in laravel
好的,基础是我希望能够对我的每个 post 发表评论。每个评论都有一个回复按钮。它不是多线程的,所以一条评论会有很多回复。那些回复不会有回复。我也希望能够喜欢和不喜欢 comment/reply。所有这些都不会绑定到用户模型或任何此类模型。 public 访问者将能够添加评论和回复评论,但需要批准。
这是我到目前为止的逻辑。我的方向是否正确(希望这个 post 也能帮助其他人):
所以我创建了一个Comment
模型。然后创建一个名为comments
的table。
我创建了一个名为 Reply
的模型和一个名为 replies
的 table
最后,模型名称 Like
是 table likes
所以关系是:
comments
会有很多 replies
而 replies
属于一个 comment
replies
& comments
会有很多 likes
。
现在是逻辑:
我会用AJAX调用CommentController
上的存储函数来存储评论。我将调用 ReplyController
上的存储函数来存储回复。至于点赞,LikeController
store function 会存储评论和回复的点赞数。
这里是 table 结构:
评论table
- id
- post_id
- 名字
- 电子邮件
- 评论
- 批准
- 时间戳
回复table
- id
- comment_id
- 姓名
- 电子邮件
- 评论(或回复)
- 批准
- 时间戳
赞table
- id
- comment_id
- reply_id
- 喜欢
- 不喜欢
- 时间戳
现在我不明白的是,喜欢table。 comment_id
和 reply_id
以及 like
和 dislike
是否正确?
每次有人点击喜欢或不喜欢时,我都可以调用存储功能并将其存储在 table 中,如果它是回复或评论,则更新该列 id
到相应的 id 列。逻辑对吗?
此外,如果你们有任何建议或更好更有效的方法,请告诉我。
这太长了,所以我就把它留在这里。
编辑
还忘了说,我不确定我将如何从 db 到 blade 获取喜欢的数量并计算它。不适用于上述当前结构。另外,如何检查并查看此人是否已经喜欢。如果是这样,不要让他们再次喜欢或不喜欢。喜欢的人不能不喜欢。他们只能做一件事。
我肯定会建议将评论、回复和点赞关联到 User
,您几乎已经在处理评论和回复了。
您可以通过多种方式拥有一个允许访客使用的 "liking" 系统,但是,这很容易绕过并最终使您的 "like" 统计数据无用。
一个示例数据库结构将是:
评论和回复
- id
- post_id // 或 comment_id 如果回复 table
- user_id
- 正文
- 批准
- (“_在”个日期)
赞
- id
- likeable_id // 评论或回复的id
- likeable_type // 评论或回复
- user_id
- 喜欢(布尔值)
- (“_at”个日期)
likes
table 设置为用作 Polymorphic 关系,例如在您的 Comment
模型中:
public function likes()
{
return $this->morphMany(Like::class, 'likeable');
}
然后添加一个喜欢你会像这样:
$like = new Like(['user_id' => auth()->user()->id, 'liked' => true]);
$comment->likes()->save();
然后您可以通过多种不同的方式检查当前授权用户是否喜欢 post,一个示例是建立单独的关系,以便您可以预先加载结果:
public function authUserLike()
{
return $this->morphOne(Like::class, 'likeable')->where('user_id', auth()->id());
}
那么如果 auth_user_like
是 null
他们还没有喜欢那个评论。
我认为不需要回复 Table 只需在评论 table 中使用 parent_id。本教程可能会帮助您入门 Nesting Comments in Laravel
好的,基础是我希望能够对我的每个 post 发表评论。每个评论都有一个回复按钮。它不是多线程的,所以一条评论会有很多回复。那些回复不会有回复。我也希望能够喜欢和不喜欢 comment/reply。所有这些都不会绑定到用户模型或任何此类模型。 public 访问者将能够添加评论和回复评论,但需要批准。
这是我到目前为止的逻辑。我的方向是否正确(希望这个 post 也能帮助其他人):
所以我创建了一个Comment
模型。然后创建一个名为comments
的table。
我创建了一个名为 Reply
的模型和一个名为 replies
的 table
最后,模型名称 Like
是 table likes
所以关系是:
comments
会有很多 replies
而 replies
属于一个 comment
replies
& comments
会有很多 likes
。
现在是逻辑:
我会用AJAX调用CommentController
上的存储函数来存储评论。我将调用 ReplyController
上的存储函数来存储回复。至于点赞,LikeController
store function 会存储评论和回复的点赞数。
这里是 table 结构:
评论table
- id
- post_id
- 名字
- 电子邮件
- 评论
- 批准
- 时间戳
回复table
- id
- comment_id
- 姓名
- 电子邮件
- 评论(或回复)
- 批准
- 时间戳
赞table
- id
- comment_id
- reply_id
- 喜欢
- 不喜欢
- 时间戳
现在我不明白的是,喜欢table。 comment_id
和 reply_id
以及 like
和 dislike
是否正确?
每次有人点击喜欢或不喜欢时,我都可以调用存储功能并将其存储在 table 中,如果它是回复或评论,则更新该列 id
到相应的 id 列。逻辑对吗?
此外,如果你们有任何建议或更好更有效的方法,请告诉我。 这太长了,所以我就把它留在这里。
编辑
还忘了说,我不确定我将如何从 db 到 blade 获取喜欢的数量并计算它。不适用于上述当前结构。另外,如何检查并查看此人是否已经喜欢。如果是这样,不要让他们再次喜欢或不喜欢。喜欢的人不能不喜欢。他们只能做一件事。
我肯定会建议将评论、回复和点赞关联到 User
,您几乎已经在处理评论和回复了。
您可以通过多种方式拥有一个允许访客使用的 "liking" 系统,但是,这很容易绕过并最终使您的 "like" 统计数据无用。
一个示例数据库结构将是:
评论和回复
- id
- post_id // 或 comment_id 如果回复 table
- user_id
- 正文
- 批准
- (“_在”个日期)
赞
- id
- likeable_id // 评论或回复的id
- likeable_type // 评论或回复
- user_id
- 喜欢(布尔值)
- (“_at”个日期)
likes
table 设置为用作 Polymorphic 关系,例如在您的 Comment
模型中:
public function likes()
{
return $this->morphMany(Like::class, 'likeable');
}
然后添加一个喜欢你会像这样:
$like = new Like(['user_id' => auth()->user()->id, 'liked' => true]);
$comment->likes()->save();
然后您可以通过多种不同的方式检查当前授权用户是否喜欢 post,一个示例是建立单独的关系,以便您可以预先加载结果:
public function authUserLike()
{
return $this->morphOne(Like::class, 'likeable')->where('user_id', auth()->id());
}
那么如果 auth_user_like
是 null
他们还没有喜欢那个评论。
我认为不需要回复 Table 只需在评论 table 中使用 parent_id。本教程可能会帮助您入门 Nesting Comments in Laravel