Laravel。原始更新后获取结果

时间:2019-03-25 11:20:04

标签: php laravel eloquent

我有以下代码:

$user->update([
    'rating' => DB::raw('rating + 1'),
    'point'  => DB::raw('point + 1'),
    'money'  => DB::raw('money + 5'),
]);

如果我们现在转到money字段($ user-> money),则将返回该表达式

'money' => 
        object(Illuminate\Database\Query\Expression)
          protected 'value' => string 'money + 5'

是否有可能获得新的价值,例如金钱,而无需再次访问数据库?

4 个答案:

答案 0 :(得分:2)

简单点。

$user->increment('rating',1);
$user->increment('point'); //default value is 1
$user->increment('money', 5);

答案 1 :(得分:1)

使用此

$user->update([
    'rating' => $user->rating + 1,
    'point'  => $user->point + 1,
    'money'  => $user->money + 5,
]);

$user->rating = $user->rating + 1;
$user->point = $user->point + 1;
$user->money = $user->money + 1;
$user->save()

答案 2 :(得分:1)

您似乎想得太多,只需执行以下操作即可:

$user->rating += 1;
$user->point += 1;
$user->money += 5;

然后运行

$user->save();

,然后,当您访问上述属性时,它应该显示更新的值。

答案 3 :(得分:1)

使用此

$user->rating += 1;              $user->rating = $user->rating + 1;
$user->point += 1;     or        $user->point = $user->point + 1;
$user->money += 5;               $user->money = $user->money + 5;

如上一个答案中所述

如果您需要求和结果,也可以这样做

$data = ['rating' => $user->rating + 1,
          'point'  => $user->point + 1,
          'money'  => $user->money + 5 ];

$user->update($data);

它将以数组格式为您提供相同的数据。