2016-03-21 3 views
0

Таким образом, у меня есть проблема с сохранением данных в БДCakePHP 3 Сохранить данные в belongsTo

Модель Таблица является ...

$this->belongsTo('Users', [ 
      'foreignKey' => 'user_id', 
      'joinType' => 'INNER' 
     ]); 

...

Я хочу, чтобы сохранить новый адрес в строке и структуры данных

object(App\Model\Entity\Address) { 

    'type' => (int) 1, 
    'Users' => [ 
     'user_id' => '9' 
    ], 
    'short_name' => 'Test', 
    'long_name' => 'test', 
    'additional_name' => 'test', 

Я попытался контроллер

if ($this->request->is('post')) { 
       $address = $this->Addresses->patchEntity($address, $this->request->data, ['associated' => ['Users.user_id']]); 
       if ($this->Addresses->save($address)) { 
        $this->Flash->success(__('The address has been saved.')); 
        return $this->redirect(['action' => 'index']); 
       } else { 
        $this->Flash->error(__('The address could not be saved. Please, try again.')); 
       } 

И в моем шаблоне просмотра это поле ввода

echo $this->Form->input('Users.user_id', ['type' => 'select', 'options' => $groups, 'class' => 'form-control']); 
echo $this->Form->input('short_name', ['class' => 'form-control']); 
echo $this->Form->input('long_name', ['class' => 'form-control']); 

Итак, что я могу сделать? Как реорганизовать структуру данных? Спасибо!

ответ

0

Вы используете CakePHP < = 2.x соглашения об именах для ваших входов, это не так, как это работает с CakePHP 3.x.

Пожалуйста, обратитесь к документации о том, как создавать материалы для связанных данных:

Cookbook > Views > Helpers > Form > Creating Inputs for Associated Data

Вы должны использовать соответствующее имя свойства ассоциации, так же, как представляется, в сущности при чтении данные. Для belongsTo ассоциаций, это по умолчанию в единственном числе, подчеркнул вариант псевдонима ассоциации, так что в вашем случае user, т.е.

echo $this->Form->input('user.user_id', [ 
    'type' => 'select', 
    'options' => $groups, 
    'class' => 'form-control' 
]); 

Смотрите также

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