Вопрос новичка CakePHP: Как мне продублировать модель и связанные с ней данные? - PullRequest
3 голосов
/ 21 февраля 2010

Как мне дублировать существующую запись модели? Другими словами, как извлечь существующую модель со связанными данными, а затем сохранить КОПИЮ этой модели И данные (скопированы как модель, так и связанные данные)? Это тривиально с использованием простого SQL, но я хочу сделать это, используя лучшие практики CakePHP.

1 Ответ

4 голосов
/ 21 февраля 2010
$record = $this->Model->find('first', array('condition' => array('Model.id' => $id)));
unset($record['Model']['id'], $record['RelatedModel']['id'], /* further ids */);
$this->Model->create();
$this->Model->saveAll($record);

По сути, вам нужно убедиться, что в данные не включены поля id, а затем просто сохранить их как обычно. Это побудит Cake создать новую запись.

В зависимости от ваших конкретных данных, может быть более экономичным написать запрос INSERT … SELECT … напрямую, используя $Model->query().

...