MySQL可以自动更新数量字段吗?

时间:2014-08-21 02:59:02

标签: mysql laravel

我正在使用Laravel和MySQL创建网站。我有2个MySQL表:帖子评论。在 comments 表中,我使用名为 post_id 的外键来引用评论所属的帖子。现在我想跟踪每个帖子的评论数量,我有2个解决方案:

A)。在帖子表中添加 number_of_comments 字段;

B)。使用选择计数()*来计算数量。

对于解决方案a,我想知道每次创建/删除评论或多条评论时,MySQL是否可以自动更新帖子表中的数量字段。通过自动说我的意思是MySQL会根据表关系自行计算数量;

对于解决方案b,我想知道如何执行MySQL orderBy 指令,例如按帖子的评论数量按升序/降序排序。

考虑减少代码编写和提高性能,哪种解决方案更好?

原谅我是一个MySQL noobie,任何建议都将不胜感激!

1 个答案:

答案 0 :(得分:0)

Laravel不是使用MySQL触发器,而是提供了一种更方便的方法(据我所知)来完成此任务:模型事件,它处理诸如创建/创建,更新/更新,保存/保存,删除/删除和恢复/恢复。所以我的评论模型现在看起来像:

class Comment extends Eloquent {
    protected $table = 'comments';
    // Model boot method, the place to register model event bindings
    public static function boot() {
        parent::boot();
        Comment::deleted(function($post) {
            $post = $comment->post;
            $post->num_comments -= 1;
            $post->save();
        });
    }
}