是否有办法将以下查询重写为1个查询?
$this->template->whereId($id)->update(['default' => true]);
$this->template->whereNotIn('id', $id)->update(['default' => false]);
您可以将它们组合在一个MySQL查询中(如果您正在使用MySQL),如下所示:
UPDATE template_table
SET default = CASE
WHEN id = $id THEN 1
WHEN id <> $id THEN 0
ELSE default = default
END
然后你可以使用DB::raw()向数据库发送一个原始查询
DB::statement("
UPDATE templates
SET default =
CASE
WHEN id = ? THEN 1
ELSE 0
END
", [$id]);
没有其他(雄辩的)方法