У меня возникла проблема с необходимостью сохранения определенных данных о создании пользователя и неуверенности в том, как подойти к нему.Проблема с сохранением конкретных данных в 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, который может быть получен только после того, как пользователь создано.
Значит, этот способ подсказывает, как структурировать мои данные в моей форме и как ее сохранить, но где я могу выполнить операцию сохранения? Я делаю это внутри этого оператора if для сохранения портфолио выше? Поскольку это просто кажется беспорядочным, это будет три утверждения if внутри друг друга. Будет ли в любом случае задействовать обратные вызовы AfterSave моделей, чтобы сделать это случайно? –
У вас буквально только одна строка - один saveAll сохранит все 3 модели. Я предлагаю прочитать очень углубленную онлайн-документацию, которая является книгой CakePHP. – Dave
вы используете только $ this-> User-> Portfolio-> save ($ this-> request-> data) вместо $ this-> User-> Portfolio-> save ($ this-> request-> data ['Portfolio ']), потому что «Портфолио» уже связано с вашим модальным. –