Сохранение несвязанных данных в CakePHP

Я пишу установщик, и поэтому мне нужно сохранить несколько типов данных в разных таблицах, даже если они не связаны. В идеале я хотел бы позаботиться обо всем этом сразу. Вот краткое из того, что у меня есть до сих пор.

Вот мой массив тортов в подготовке к сохранению указанных данных.

$initialData = array(
    array( 'Option' => array( 'name' => 'version', 'value' => '1.0.0', )),
    array( 'Option' => array( 'name' => 'non-version', 'value' => '1.0.2', )),
    array( 'User' => array( 'username' => 'skyler', 'password' => 'hi', )),
);

И я использую следующее, чтобы попытаться сохранить его.

$this->Option->saveMany($initialData)

Что сохраняет только Option строки, а не User строки. Мысли?

ПРИМЕЧАНИЕ. Это НЕ связанные данные. Параметры и пользователи не связаны, но их необходимо сохранить одновременно.


person alairock    schedule 11.09.2012    source источник


Ответы (2)


$this->Option->saveMany будет работать, потому что вы сохраняете несколько записей для одной таблицы. Однако, поскольку пользователь не связан с опцией, он не знает, что делать с данными. Вам нужно будет позвонить $this->User->save($initialData).

Если вы ожидаете иметь несколько пользовательских записей, вы можете вызвать $this->User->saveMany($initialData).

Не забудьте позвонить $this->User->create().

person Chuck Burgess    schedule 11.09.2012
comment
Таким образом, мне, по сути, нужно будет использовать отдельный $this->Model->save[Many] для каждой из имеющихся у меня таблиц/моделей? - person alairock; 12.09.2012
comment
Если они не связаны... да. - person Chuck Burgess; 12.09.2012

Обычно я просто отправляю SQL-скрипт со своими пакетами, который создает и заполняет таблицы базы данных.

См. Несколько SQL-запросов, не выполняемых в Cakephp, в качестве примера того, как прочитать и выполнить файл в CakePHP.

person RichardAtHome    schedule 11.09.2012
comment
Очевидно, самый простой ответ. Проблема в том, что если мой скрипт имеет префикс таблицы? Это должно быть динамично, поэтому я хочу сделать это в стиле CakePHP. - person alairock; 11.09.2012
comment
Вы можете использовать макрос в необработанном файле sql (например, [префикс]_my_table.foo) и заменить его реальным префиксом, используя str_replace(), прежде чем запускать запрос. - person RichardAtHome; 12.09.2012
comment
Эффективно, но я определенно хочу придерживаться соглашений CakePHP. Я планирую построить свои массивы данных и использовать Model::save[Many] для заполнения таблиц таким образом. Спасибо за вашу помощь. - person alairock; 12.09.2012