使用laravel使用自定义变量更新语句

时间:2018-03-29 15:08:32

标签: php mysql laravel

我尝试使用以下代码运行更新语句:

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));

然而,我不认为这是正确的方法,因为它不起作用。有人能指出我正确的方向吗?

谢谢!

3 个答案:

答案 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