使用Cake-PHP3我试图批量保存或更新(即如果记录是现有更新,否则插入)
说我有一个数组
$records=
[
['id'=1,'data'='data'],
['id'=2,'data'='data'],
['id'=3,'data'='data']
];
如何批量保存或更新它?
我尝试使用saveMany,但如果记录存在,它总是会导致重复键错误。
$entities = $this->MyModel->newEntities($records);
$this->saveMany ($entities);
我知道有一个解决方案使用epilog和mysql"重复更新"
foreach ($records AS $record) {
$query = $this->Articles->query();
$query
->insert($record_fields)
->values($record)
->epilog('ON DUPLICATE KEY UPDATE field=field+1')
->execute();
}
但是这个解决方案似乎可以自己保存每条记录,而不是以对我来说非常重要的大量方式保存(大量记录)
答案 0 :(得分:0)
Cake \ ORM \ Table :: saveMany($ entities,$ options = [])
使用此功能,您可以在cakephp3中保存多个实体。
$data = []; // Your data
$entities = $this->MyTable->newEntities($data);
$result = $this->MyTable->saveMany($entities);