laravel->在具有连接的查询结果上保存()不起作用

时间:2018-11-07 10:19:15

标签: php laravel eloquent

我遍历结果集,并且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();

但是,我可能在整个代码库中的多个地方都有此问题。它只是无法更改正确的数据,还是我不得不担心会将意外更改写入数据库?

0 个答案:

没有答案