Laravel 5.4更新表中的所有记录而不使用where子句

时间:2017-10-10 02:07:48

标签: php mysql laravel

我正在尝试使用Laravel 5.4中的单个雄辩查询来更新表中的所有记录

Currency::update(['default'=>0]);

我希望此查询将更新表中的所有记录,但此查询无效。期望where子句和我不想使用where子句放任何条件,我只想更新表中的所有记录。

我没有从laravel文档中得到任何答案。

表格结构 enter image description here

3 个答案:

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

简单查询以更新表的所有行。