Laravel中的数据库结构

时间:2015-01-27 07:40:57

标签: php mysql laravel

我是Laravel的新手,我希望在我的网站上有一个按钮

我的帖子表:

    post_id    |    body    |    created_at

我喜欢这张桌子:

    like_id    |   user_id  |     post_id    | timestamp

问题:

1 - 如何计算Laravel中的喜欢?

2 - 我的数据库结构是否正确?

3 - 我将获得声誉(如stackoverflow),我应该将该重新发布保存在用户表中的一个字段中,还是具有不同的结构?

2 个答案:

答案 0 :(得分:1)

我也会在post表中添加总数。如果您不添加它,则需要始终执行sum()查询,这可能会对您的数据库造成太大负担(取决于您网站上的访问次数等)。

您可以在用户表中保存信誉。你可能想要添加类似你喜欢的表格。用户肯定想知道为什么他们会获得更多的声誉。

答案 1 :(得分:1)

  1. 您可以使用count()方法使用Laravel对结果进行计数。对于 示例计算表中的所有喜欢:

    // Eloquent + Query Builder
    $likes = Likes::all()->count();
    
    // Query Builder
    $likes = DB::table('likes')->count();
    
  2. 您可能需要查看aggregation methods Laravel offers

    1. 您展示的两个表的结构看起来很好。需要考虑的一件事是,当用户或帖子被删除时,相应的喜欢会发生什么(ON DELETE ...

    2. 您可以将声誉字段放在user表中,但更清晰 这样做是为了与外国人建立声誉的单独表格 用户ID的关键。