如何在单个查询中更新多行数据

How to update multiple row data in a single query?

本文关键字:更新 数据 查询 单个      更新时间:2023-09-26

我在数据库中有多行。

我需要根据一定的条件收集所有的行,并通过从列的值中删除一个单词来改变特定列的值。

如何使用CakePHP 3?

尝试如下:

$model->updateAll(
        ['description' => "REPLACE (description, 's', 'a')"], // fields
        ['is_disabled' => 1] //condition
);

将生成如下sql:

UPDATE 
    mytable
SET 
    description =  REPLACE (description, 's', 'a') 
WHERE
     is_disabled = 1

请注意,这是替换匹配字符串('s'),它出现在任何地方的描述字段-甚至在一个词的中间。这通常会导致众所周知的俱乐部错误。

将此添加到控制器顶部"use Cake'Datasource'ConnectionManager;"

$this->loadModel('Rewards');
$connection = ConnectionManager::get('default');
$results = $connection->execute("UPDATE rewards SET description =  REPLACE (description, 's', 'a') where is_disabled=1");

我在描述字段'wwss'中有值,现在字段word替换为'wwaa',就像这样。

有关更多说明,请参阅此链接

http://book.cakephp.org/3.0/en/orm/database-basics.html

如何使用mySQL replace()来替换多个记录中的字符串?

,请审查,谢谢!