有没有办法让 cake 在单个查询中执行多行插入,而无需编写原始 SQL 来执行此操作? saveMany 和 saveAssociated 选项只会在单个事务中保存多行,但该事务包含多个插入语句,因此这些方法显然不是编写重型应用程序的解决方案。
谢谢阅读。
Yes
尽管在应用程序代码中这样做并不常见,但这样做消除了使用几乎任何应用程序逻辑(验证规则、行为、事件等)的可能性。你可以看到一个这样做的例子夹具已加载 https://github.com/cakephp/cakephp/blob/master/lib/Cake/TestSuite/Fixture/CakeTestFixture.php#L284:
$db = ConnectionManager::getDataSource('default');
$table = "stuffs";
$fields = array('id', 'name');
$values = array(
array(1, 'one'),
array(2, 'two'),
...
);
$result = $db->insertMulti($table, $fields, $values);
您可能还会发现这个存储库 https://github.com/lorenzo/cakephp-fixturize有用(直接或作为代码的基础),它使用多重插入将夹具文件加载到您的应用程序数据库中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)