我正在使用Laravel和MySQL创建网站。我有2个MySQL表:帖子和评论。在 comments 表中,我使用名为 post_id 的外键来引用评论所属的帖子。现在我想跟踪每个帖子的评论数量,我有2个解决方案:
A)。在帖子表中添加 number_of_comments 字段;
B)。使用选择计数()*来计算数量。
对于解决方案a,我想知道每次创建/删除评论或多条评论时,MySQL是否可以自动更新帖子表中的数量字段。通过自动说我的意思是MySQL会根据表关系自行计算数量;
对于解决方案b,我想知道如何执行MySQL orderBy 指令,例如按帖子的评论数量按升序/降序排序。
考虑减少代码编写和提高性能,哪种解决方案更好?
原谅我是一个MySQL noobie,任何建议都将不胜感激!
答案 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();
});
}
}