我尝试使用以下代码运行更新语句:
DB::update('update users set elo = 44 where id = 10 limit 1', array(1));
这很好用,但我想将自定义变量传入id而不是' 10'。例如:
DB::update('update users set elo = 44 where id = $homeplayer limit 1', array(1));
然而,我不认为这是正确的方法,因为它不起作用。有人能指出我正确的方向吗?
谢谢!
答案 0 :(得分:1)
据我所知,以下两个选项都应该有效:
$id = 10; // make sure we have an id
DB::statement(DB::raw('update users set elo = 44 where id = ? limit 1', [$id]));
DB::statement(DB::raw('update users set elo = 44 where id = :id limit 1', ['id' => $id]));
虽然以下会更加“雄辩”......
$id = 10; // make sure we have an id
User::where('id', $id)->update(['elo' => 44]);
修改强> 请注意,以上所有解决方案都不会在更新时触发任何Eloquent事件。如果您希望触发此类事件,则必须执行类似的更新
$user = User::find($id);
$user->elo = 44;
$user->save();
答案 1 :(得分:1)
DB::table('users')->where('id', 10)->update(['elo' => 44]);
DB::table('users')->where('id', 10)->limit(1)->update(['elo' => 44]);
DB::update('update `users` set `elo` = ? where `id` = ?', [44, 10]);
答案 2 :(得分:0)
您可以使用以下内容:
DB::table('users')->where('id', $homeplayer)->update(['elo' => 44]);
查看有关查询构建器的official documentation