我应该通过在每条新的comments/likes/dislikes
记录之后更新它们来在图像表中存储like/dislike/comment
的数目
或
每次需要知道计数时,我是否应该只查询Vote::where('image_id', $this->id)->where('vote', true)->count();
之类的信息?
答案 0 :(得分:2)
这实际上取决于实际情况(例如,您要存储和期望多少数据),并且两种情况都被两种碰撞原理所见。
参数一:不保存可计算的数据。如果您可以保存一系列事件(例如所有投票),则始终可以从中扣除总数。但是,这样做的缺点是,在具有大量数据的应用程序中它可能会变慢。
参数二:请保存所需的数据。根据您使用的是哪种持久性层,每当更改数据时保存数据可能是一个好主意。例如。 MongoDB确实有一种“只存储所需内容”的方法。优点:即使在具有大量数据的应用程序上,这也将具有良好的性能,因为您无需即时计算任何内容,而只需输出数字即可。
TL; DR:这实际上取决于您的应用程序可能更难以解决的因素。