来宾和用户Laravel的评论表结构

时间:2019-01-31 11:06:34

标签: php laravel

我想为访客和站点用户发布评论系统。我需要,当客人添加评论时,我需要检查给他发电子邮件。为此,访客添加评论时,他可以写评论的“名称”,“电子邮件”,“正文”。当他发送评论时,我需要确认向他发送电子邮件,因为在表中我的列具有email_token。

现在我的评论表结构:

- id
- post_id
- user_id
- name
- email
- email_token
- email_verified_at
- body
- created_at
- updated_at

我对我的桌子的结构有疑问。怎么会更好?是在评论表中为访客的所有列(名称,电子邮件,email_token,email_verified_at),还是为访客评论创建单独的表?我需要在帖子模型中显示所有活动评论。如果访客未确认电子邮件,则评论未激活。

在后期模型中,我有这个:

public function comments() {
    return $this->hasMany('App\Comment')->whereNotNull('email_verified_at')->orWhereNotNull('user_id'); //display only comments by user and guest (with confirmed email)
}

2 个答案:

答案 0 :(得分:0)

我建议有一个单独的表,也可以使用其可能已用于注册用户这样你可以删除重复数据的用户表。

在未来,访客用户可能成为一个网站的用户也是如此。那么好,你在你的用户表中添加名为“is_guest”或“类型”一个标志。

答案 1 :(得分:0)

我觉得你的数据组织适合于您的使用案例(检索有效积极的意见)。分离不是必需的,因为你的表仍然有列的数量减少。

有关的代码的一部分,可以有一个查询范围注释:: scopeOnlyActive(),这将应用whereNotNull / orWhereNotNull。这样一来,你可以写这种方式:

public function comments() {
    return $this->hasMany('App\Comment')->onlyActive();
}