我有一个名为Vote的表,另一个名为sub_item的表。投票和子项目共享一对多的关系。我有另一个名为Vote_casts的表,它记录了用户投票的子项。 这是一个例子:
现在,我想计算特定投票的每个sub_item的投票数。我没有存储这个值,因为它会对表进行非规范化。 相反,我希望从vote_casts表中计算这些数据。 (通过计算特定sub_item_id的行数,我将能够这样做)。
所以在我的模型中,我创建了这个:
public function getCountAttribute(){
return Vote_cast_action::where('sub_item_id',$this->id)->count();
}
这可以按预期工作。但问题是,对于投票中的每个子项,调用查询。因此,如果投票中有20个子项,则该行本身将被调用20次(我在查看我的sql查询日志后这样说)