Сохранить идентификатор из связанной модели при сохранении - PullRequest
2 голосов
/ 19 января 2012

Я уверен, что есть очень простое решение для этого, но объяснение является сложным, поэтому, пожалуйста, потерпите меня.

У меня есть регистрационная форма Registration::add(), и она состоит из трех разделов.

  1. Первый - это данные Registration, количество полей.
  2. Второй - это флажки для трех связанных моделей HABTM, Role, Category и CategoryChild
  3. Третье - это создание записи в User

Моя Registration модель имеет user_id, и мне нужно сохранить сгенерированный User.id в этом поле.

Я уверен, что смогу сделать это, используя отношения модели, так как модель User сохраняет штраф User.registration_id, но, похоже, не записывает в Registrationмодель.

Нужно ли создавать другое поле в моем представлении add.ctp, чтобы оно присутствовало в массиве $this->data->request?Я бы предпочел сделать это, а не втягиваться в фафинг с beforeSave() и afterSave().

Так что мне просто нужно создать

$this->Form->input('Registration.user_id', array('type'=>'hidden'));

Мои отношения, для справки

Registration hasOne User
Registration hasAndBelongsToMany Category
Registration hasAndBelongsToMany CategoryChild
Registration hasAndBelongsToMany Role
User hasOne Registration

В настоящее время я использую saveAll($this->request->data) для сохранения всех своих данных, и ему удается сохранить все, кроме Registration.user_id

Ответы [ 2 ]

0 голосов
/ 19 января 2012

Ваши отношения имеют

Registration hasOne User

Однако у вас есть и Registration.user_id, и User.registration_id, означающие, что вам нужны отношения hasAndBelongsToMany.

На всякий случай, если вы не используете Cake Baker для генерации моделей это очень полезно.

0 голосов
/ 19 января 2012

Да, что-то вроде этого должно работать согласно вашему вопросу:


<?php echo $form->input('Registration.user_id',array('type'=>'hidden', 'value' => $user_id)); ?>

Надеюсь, это поможет

...