Cakephp - Сохранение непосредственно в таблицу HABTM - PullRequest
0 голосов
/ 04 декабря 2011

Я пытаюсь сохранить данные непосредственно в таблицу HABTM offerings_students

Я делаю это, потому что в этой таблице есть поле, которое мне нужно вручную установить в моем контроллере.

Мой$ this-> data массив в настоящее время выглядит следующим образом, после установки поля owing.

Array
(
[OfferingsStudent] => Array
    (
        [OfferingsStudent] => Array
            (
                [0] => Array
                    (
                        [offering_id] => 35
                        [owing] => 209.00
                        [student_id] => 31
                    )

            )

    )

)

Форма допускает множественный выбор, поэтому я должен иметь возможность сохранить более одной записи в HABTMтаблица.

Мой оператор сохранения: $this->Student->OfferingsStudent->save($this->data)

Проблема в том, что записи не добавляются в таблицу.Я должен иметь возможность добавить несколько записей в таблицу с одной отправкой формы.

Я должен добавить, что запись создается, но все поля заканчиваются нулями.

РЕДАКТИРОВАТЬ:

Изменен массив, чтобы попробовать представленное решение, но все равно не повезло.

$ this-> массив данных:

Array
(
[OfferingStudent] => Array
    (
        [0] => Array
            (
                [offering_id] => 35
                [owing] => 209.00
                [student_id] => 31
            )

    )

)

Ответы [ 2 ]

1 голос
/ 04 декабря 2011

Вы не задали вопрос.Ваша проблема в том, что ваши попытки спасти не работают?Вы пытаетесь вставить новую запись или обновить новую?

Если просто вставить, попробуйте вместо этого:

$data = array(
    [offering_id] => 35
    [owing] => 209.00
    [student_id] => 31
);

$this->OfferingsStudent->save($data);

Это сохранит непосредственно в таблицу.Вам не нужно создавать модель для этой работы.

РЕДАКТИРОВАТЬ

Чтобы добавить более одного:

$data = array(
    'OfferingStudent' => array(
        array(
            [offering_id] => 35
            [owing] => 209.00
            [student_id] => 31
        ),
        array(
            [offering_id] => 32
            [owing] => 100
            [student_id] => 30
        )
    )
);

$this->OfferingsStudent->saveAll($data);
0 голосов
/ 20 мая 2013

Массив, который Scoot Harwell генерирует в Edit, хорош для создания saveAll, но код для выполнения действия должен быть:

$this->OfferingsStudent->saveAll($data['OfferingStudent']);

У меня та же проблема, и в конце концов я обнаружил, что через много времени.

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