我遍历结果集,并且updatePoints方法最终在用户上调用save(),但是它没有按我预期的那样工作:
$users = User::join('groups', 'group.id', 'users.group_id')
->where('groups.name', 'xxx')
->get();
foreach($users as $user) {
$user->updatePoints();
}
这些点不会在数据库中更新。我已经发现问题了。当updatePoints方法中的$ this将组的ID定义为id属性而不是用户id时。我假设这就是为什么save()调用不会为用户本身保存任何内容的原因。我可以通过将查询更改为以下内容来解决该问题:
$users = User::join('groups', 'group.id', 'users.group_id')
->where('groups.name', 'xxx')
->select('users.*')
->get();
但是,我可能在整个代码库中的多个地方都有此问题。它只是无法更改正确的数据,还是我不得不担心会将意外更改写入数据库?