我正在尝试使用Laravel 5.4中的单个雄辩查询来更新表中的所有记录
Currency::update(['default'=>0]);
我希望此查询将更新表中的所有记录,但此查询无效。期望where子句和我不想使用where子句放任何条件,我只想更新表中的所有记录。
我没有从laravel文档中得到任何答案。
答案 0 :(得分:5)
MySQL具有安全的更新服务器模式,除非该语句具有涉及主键的WHERE
子句,否则不会允许更新。如果你的MySQL在这种模式下运行,那么欺骗它的一种方法就是使用WHERE id = id
,如下所示:
DB::table('Currency')
->where('id', 'id')
->update(['default' => 0]);
答案 1 :(得分:0)
如果您的MySQL服务器运行SQL_SAFE_UPDATES模式,则可以这样使用“ where”。或另一个包含所有结果的“ where子句”。
if ($this->start_date !== null && $this->end_date !== null) {
$query->andFilterWhere(
[
'BETWEEN',
new Expression(
'DATE_FORMAT(FROM_UNIXTIME(created),"%Y/%m/%d")'
),
date("Y/m/d", strtotime($this->start_date)),
date("Y/m/d", strtotime($this->end_date)),
]
);
}
答案 2 :(得分:0)
Product::query()->update('default'=>0);
简单查询以更新表的所有行。