Торт PHP сохранить Ассоциированный принадлежит
Работает ли saveAssociated с моделями? у меня есть Donor
модель, которая принадлежит User
модель. Это означает, что user_id
хранится в Donor
модель. Я пытаюсь использовать saveAssociated()
сохранить донорские / пользовательские данные за один звонок. Однако это не похоже на работу
Вот что я попробовал:
$this->request->data['User'][0]['role'] = 'donor'; //tried without the `[0]`
$this->request->data['User'][0]['activation_secret'] = $activation_secret;
if($this->Donor->saveAssociated($this->request->data, array('deep' => true))){
//success message
}
Я справился с этим, сделав так:
$user = $this->Donor->User->save($this->request->data);
if(!empty($user)){
$this->request->data['Donor']['user_id'] = $this->Donor->User->getLastInsertId();
}
if($this->Donor->save($this->request->data)){
// success message
}
Это правильный способ сделать это? Или я что-то упустил?
[РЕДАКТИРОВАТЬ]
Моя форма следует этой схеме
<?php
echo $this->Form->create('Donor');
echo $this->Form->input('name', array('id' => 'name','div' => 'inline-input'));
echo $this->Form->input('surname', array('id' => 'surname','div' => 'inline-input'));
?>
NB. Связанные данные модели, подлежащие сохранению, жестко закодированы, как показано выше в действии сохранения.
1 ответ
Попробуйте следующее:
$this->request->data['User']['role'] = 'donor';
$this->request->data['User']['activation_secret'] = $activation_secret;
unset($this->Donor->validate['user_id']); // This might solve your problem
if($this->Donor->saveAssociated($this->request->data, array('deep' => true))){
//success message
}