我正在创建一个使用Laravel和MySQL的网站。我有两个MySQL表:帖子和评论。在注释表中,我使用一个名为post_id的外键来引用注释属于哪个帖子。现在,我想记录属于每个帖子的评论数量,我有两个解决方案:
a)。在posts表中添加一个number_of_comments字段;
b)。使用Select ()*计算数量。
对于解决方案a,我不知道MySQL是否能够在每次创建/删除注释或多个注释时自动更新posts表中的quantity字段。自动地说,我的意思是MySQL会根据表的关系自动计算数量;
对于解决方案b,我想知道如何才能执行MySQL orderBy指令,比如按其注释的数量对post进行排序。
哪种解决方案更适合考虑编写更少的代码和更好的性能?
请原谅我是MySQL noobie,任何建议都将不胜感激!
发布于 2014-09-29 13:47:43
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();
});
}
}https://stackoverflow.com/questions/25417599
复制相似问题