laravel -> save () по результатам запросов с объединением не работает - PullRequest
0 голосов
/ 07 ноября 2018

Я перебираю набор результатов, и методы 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();

Однако у меня может быть эта проблема в нескольких местах по всей моей кодовой базе. Не может ли быть изменено только правильные данные или я должен беспокоиться о том, что непреднамеренные изменения записываются в БД?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...