【发布时间】:2023-03-06 10:24:01
【问题描述】:
在 Cakephp 3.0 中,为了保存许多记录,指示使用saveMany 函数。
https://book.cakephp.org/3.0/en/orm/saving-data.html#saving-multiple-entities
不过,上面的提交插入语句一个接一个。
我需要一次更新几千条记录,所以我想批量插入我的记录,而不是一条一条地插入。
为了验证这一点,我尝试了saveMany 的行为,我检查了我的querys.log,似乎使用saveMany 不会批量插入我的查询,而是一个接一个地插入。
换句话说,我想要这个:
INSERT INTO mytable (id, code) VALUES ('123', 'code_a'), ('123', 'code_b'), ('123', 'code_c'), ('123', 'code_d'), ('123', 'code_e');
但是执行了以下操作
INSERT INTO mytable (id, code) VALUES ('123', 'code_a')
INSERT INTO mytable (id, code) VALUES ('123', 'code_b')
INSERT INTO mytable (id, code) VALUES ('123', 'code_c')
INSERT INTO mytable (id, code) VALUES ('123', 'code_d')
INSERT INTO mytable (id, code) VALUES ('123', 'code_e')
所以我的问题是,如何在 Cakephp 3.0
中进行 批量插入注意:我做了一些研究,发现saveAll 函数在 Cakephp 2.0 中,它可以进行批处理(据说),但遗憾的是,3.0 中没有这样的函数。 p>
【问题讨论】:
-
仅供参考,book.cakephp.org/3.0/en/orm/query-builder.html#inserting-data 中的方法也是一一插入的,已经测试过了。谢谢。
-
这不正确,您可以设置多个值集,如第二个示例所示。这将在
VALUES子句中相应地生成一个使用多个数据集的查询。 -
@ndm 哦,伙计,你是对的,你的答案确实有效!对于事先错误的测试,我深表歉意。请提交答案,我会接受,谢谢。
标签: cakephp