我试图用“order by”和“limit”条件更新行。
我如何使用 Model :: updateAll()方法更新行“order by”和“limit”?
编辑:
当我尝试在Model-> query()方法中执行此查询时:“UPDATE table_name SET status = 2 WHERE type = 1 AND status = 1 ORDER BY id asc limit 10”,我收到错误“语法错误或访问冲突: 1064您的SQL语法出错;请查看与您的MySQL服务器版本对应的手册,以便在第1行“10”附近使用正确的语法。但是当我在mysql控制台客户端执行此查询时,一切正常。
答案 0 :(得分:0)
CakePHP 2.x不支持LIMIT
的{{1}}和GROUP
参数。
您可以使用Model::updateAll()
运行所需的自定义SQL。但是,不会触发模型回调。
我建议如果您需要使用GROUP和LIMIT更新所有内容,请再次考虑如何最好地提供您需要的功能。
更新数据库中的所有行并不是一个好主意......如果你有7500万行怎么办?运行和完成可能需要数小时。即使你不希望有7500万行,它仍然可能不是一个好的解决方案。
很难提供更好的示例,因为您还没有描述为什么要更新所有内容。