【问题标题】:How to update multiple row data in a single query?如何在单个查询中更新多行数据?
【发布时间】:2015-10-14 17:12:35
【问题描述】:

我在数据库中有多行。

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

如何使用 CakePHP 3 完成?

【问题讨论】:

  • 您要获取还是更新记录
  • 更新 website_content_pages SET content = REPLACE(content, 'b>', 'strong>');在 sql 中尝试这个查询它可以同时工作它在 cakephp 3.x 中不起作用

标签: javascript php mysql cakephp 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

【讨论】:

  • 我已经修改了答案,以便它回答问题 - 将来最好只写一个答案,如果它确实回答了这个问题。感谢您在代码示例中使用空格 - 请保持这种习惯(并修复您现有的不这样做的问题/答案)。
  • "REPLACE (description, 's', 'a')" 完全这些值已更新到我的列中
【解决方案2】:

在控制器顶部添加这个“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”中有值,现在字段词替换为“wwaa”。

更多解释请参考此链接

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

How can I use mySQL replace() to replace strings in multiple records?

请审核,谢谢!

【讨论】:

  • 你为什么要回答自己的问题,就好像你不认识提问的人一样?
  • @AD7six 嗨,第一次搜索了这个问题的答案,并从对我来说完美的文档中得到了答案。所以我发布了我的问题的答案
  • 回答你自己的问题很好(并且鼓励)当自我回答很奇怪时添加这个I hope this is usefull for your question.Please review,Thanks!
  • @AD7six 我很抱歉。这是我的粗心 :) 现在我编辑并更新了我的问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-07
  • 1970-01-01
  • 1970-01-01
  • 2015-02-28
相关资源
最近更新 更多