Я перебираю набор результатов, и методы updatePoints в конечном итоге вызывают save () для пользователя, но он не работает, как я ожидал:
$users = User::join('groups', 'group.id', 'users.group_id')
->where('groups.name', 'xxx')
->get();
foreach($users as $user) {
$user->updatePoints();
}
Очки не обновляются в БД. Я уже нашел проблему. Когда $ this в методе updatePoints имеет идентификатор группы, определенный как атрибут id вместо идентификатора пользователя. Я предполагаю, что именно поэтому вызов save () ничего не сохраняет для самого пользователя. Я могу это исправить, изменив запрос на:
$users = User::join('groups', 'group.id', 'users.group_id')
->where('groups.name', 'xxx')
->select('users.*')
->get();
Однако у меня может быть эта проблема в нескольких местах по всей моей кодовой базе. Не может ли быть изменено только правильные данные или я должен беспокоиться о том, что непреднамеренные изменения записываются в БД?