Cakephp3, как массово сохранять или обновлять записи - PullRequest
0 голосов
/ 06 мая 2018

Использование Cake-PHP3 Я пытаюсь сохранить или обновить массово (т. Е. Если запись является существующим обновлением, вставьте в противном случае)сохранить или обновить?

Я пытался использовать saveMany, но это всегда приводит к ошибке дублированного ключа, если запись существует.

$entities = $this->MyModel->newEntities($records);
$this->saveMany ($entities);

Я знаю, что есть решение, использующее эпилог с mysql "при повторном обновлении "

foreach ($records AS $record) {
  $query = $this->Articles->query();
  $query
    ->insert($record_fields)
    ->values($record)
    ->epilog('ON DUPLICATE KEY UPDATE field=field+1')
    ->execute();
}

Но, похоже, это решение позволяет сохранять каждую запись самостоятельно, а не массовым образом, что очень важно для меня (тонны записей)

1 Ответ

0 голосов
/ 16 мая 2018

Cake \ ORM \ Table :: saveMany ($ entity, $ options = [])

Используя это, вы можете сохранить несколько сущностей в cakephp3.

$data = [];  // Your data
$entities = $this->MyTable->newEntities($data);
$result   = $this->MyTable->saveMany($entities);
...