我在数据库中有多行。
我需要根据特定条件收集所有行,并通过从列的值中删除一个单词来更改特定列的值。
如何使用CakePHP 3完成任务?
答案 0 :(得分:1)
尝试以下方法:
$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'),它会出现在说明字段中的任何位置 - 即使在单词的中间。这通常会导致众所周知的clbuttic mistakes。
答案 1 :(得分:0)
在控制器顶部添加“使用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'中有值,现在字段替换为'wwaa'就像那样。
有关更多说明,请参阅此链接
http://book.cakephp.org/3.0/en/orm/database-basics.html
How can I use mySQL replace() to replace strings in multiple records?
请复习,谢谢!