Торт 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 
}
Другие вопросы по тегам