CakePhp поле массива сохранения (hasMany) - PullRequest
1 голос
/ 27 сентября 2010

У меня есть поле массива в HTML:

< input type="text" name="WineDescripcion[Description][]" />

Это поле можно продублировать, нажав кнопку. Как сохранить его в модели через контроллер?

Это мой текущий код:

$this->Vino->VinoDescription->save($this->data);

Но это возвращает ошибку SQL:

Query: INSERT INTO `vino_description` (`subtitulo`, `descripcion`, `id_vino`) VALUES (Array, Array, 60) 

Также, если я попытаюсь изменить имя в HTML на:

< input type="text" name="WineDescripcion[][Description]" />

Это работает, но сохраняет только 1 запись со значениями "NULL". Заранее спасибо.

Ответы [ 3 ]

0 голосов
/ 27 сентября 2010
foreach ($this->data as $row) {
   $insertData = array('subtitle' => $row['Subtitle'], 'description' => $row['description']);
   $this->Vino->VinoDescription->save($insertData);
}

И, возможно, у вас ошибка в синтаксисе subtitulo, descripcion.Может быть, это должно быть subtitle и description?

0 голосов
/ 27 сентября 2010

Вот как, наконец, решить это:

    for ($i=0; $i<=count($this->data['VinoDescription'])-1; $i++) {
        $this->Vino->VinoDescription->create();
        $insertData = array('id_vino' => $this->Vino->id, 'subtitulo' => $this->data['VinoDescription']['subtitulo'][$i], 'descripcion' => $this->data['VinoDescription']['descripcion'][$i]);
        $this->Vino->VinoDescription->save($insertData);
    } 

Спасибо Александру за советы.

0 голосов
/ 27 сентября 2010

Попробуйте обработать ваши данные в контроллере перед вставкой. Вы пытаетесь вставить значения в виде массивов. Это не правильно. Дайте не массив значений из почтовых данных. Вы можете использовать print_r($this->data), чтобы увидеть структуру ваших сообщений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...