2015-04-10 3 views
0

У меня возникла проблема с необходимостью сохранения определенных данных о создании пользователя и неуверенности в том, как подойти к нему.Проблема с сохранением конкретных данных в CakePHP

У меня есть три модели, пользователь, портфолио и учетная запись. Пользователь hasOne Portfolio, Portfolio hasMany Account. Я пытаюсь выяснить, как сохранить данные учетной записи при создании Пользователя. Но это не то место, где оно заканчивается.

В настоящее время при создании Пользователя Портфолио также создается после успешного создания пользователя. Используя эти 3 строки в файле UsersController.php:

if ($this->User->save($this->request->data['User'])) { 
      $this->request->data['Portfolio']['user_id'] = $this->User->id; 
      if ($this->User->Portfolio->save($this->request->data['Portfolio'])) { 

Счета таблица является довольно скудной, идентификатор, portfolio_id, валюта и суммы. При создании пользователя в таблицу учетных записей необходимо добавить несколько строк, по одному для каждой поддерживаемой валюты (на данный момент 2, скорее всего, будет более поздней), и каждая строка может иметь разные суммы.

Мои проблемы в два раза, во-первых, как мне создать эти новые данные в форме регистрации пользователя? И, во-вторых, что мне делать с ним после успешного создания пользователя?

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

EDIT: После консультации по использованию saveAll, чтобы сохранить все данные и связанные с ними данные, я столкнулся с другой проблемой. Мой портфель - это самое точное определение тонкости на данный момент. Прямо сейчас, он содержит только user_id, и все. Поэтому, когда я запускаю операцию сохранения, в массиве request-> data нет данных, чтобы обозначить, что портфолио необходимо сохранить, поскольку единственные данные, которые необходимо сохранить, поступают из user_id, который может быть получен только после того, как пользователь создано.

ответ

1

Посмотрите на CakePHP's saveMany(). Это то, что вы ищете. На эту страницу также может ответить любой из других незначительных связанных вопросов.

+0

Значит, этот способ подсказывает, как структурировать мои данные в моей форме и как ее сохранить, но где я могу выполнить операцию сохранения? Я делаю это внутри этого оператора if для сохранения портфолио выше? Поскольку это просто кажется беспорядочным, это будет три утверждения if внутри друг друга. Будет ли в любом случае задействовать обратные вызовы AfterSave моделей, чтобы сделать это случайно? –

+0

У вас буквально только одна строка - один saveAll сохранит все 3 модели. Я предлагаю прочитать очень углубленную онлайн-документацию, которая является книгой CakePHP. – Dave

+0

вы используете только $ this-> User-> Portfolio-> save ($ this-> request-> data) вместо $ this-> User-> Portfolio-> save ($ this-> request-> data ['Portfolio ']), потому что «Портфолио» уже связано с вашим модальным. –

Смежные вопросы