2015-04-23 3 views
0

У меня есть люди, принадлежащие многим телефонам. Могу ли я сохранить человека с его телефоном в одном сохранении(), как это?CakePHP 3,0 сбережения принадлежит ToMany без связанных ID

в PeopleTable:

$this->belongsToMany('Phones', [ 
    'foreignKey' => 'person_id', 
    'targetForeignKey' => 'phone_id', 
    'joinTable' => 'people_phones' 
]); 

в add.ctp:

$this->Form->create($person); 
$this->Form->input('person_name'); 
$this->Form->input('phones.0.phone_number'); 

в PeopleController:

$person = $this->People->patchEntity($person, $this->request->data, ['associated' => ['Phones']]); 
$this->People->save($person, ['associated' => ['Phones']]) 

Но только человек получает спасение, без телефона. Нет сообщения об ошибке. Можно ли даже сохранить это?

У меня есть CakePHP 3.0.2 (обновлено сегодня)

Mabye Я хотел бы добавить, что я новичок, никогда не кодируются в ООП, а теперь я пытал Google в течение двух дней без соответствующего ответа. Просто «да, это должно работать так, у вас должна быть некоторая ошибка» или «нет, вы должны сохранить телефон первым, чтобы получить его идентификатор» было бы достаточно :) Спасибо

+0

Выглядит хорошо для меня ... как выглядит ваш класс класса Person, в частности его свойство '$ _accessible'? Также вы можете добавить отладочный дамп '$ person' (' debug ($ person); ') после исправления и показать результаты? – ndm

+0

@ndm Вы правы! Спасибо огромное! У меня не было «телефонов» в $ _accessible. Я напишу результирующую форму объекта Person в ответе – leeroy

ответ

0

Благодаря @ndm проблема была обнаружена в Класс лица в $ _accessible. Это должно выглядеть так:

protected $_accessible = [ 
    'person_name' => true, 
    'phones' => true, 
]; 

Теперь он отлично работает! Большое спасибо