Сохранить имеет много ассоциаций

У меня есть сущность Карта и другой ExercisesGroup.

Card HAS MANY ExercisesGroup

// Fields
Card = name
ExercisesGroup = name, card_id

App \ Model \ Таблица \ CardsTable

    $this->hasMany('ExercisesGroups', [
'foreignKey' => 'card_id'
]);
public function validationDefault(Validator $validator)
{
$validator
->add('id', 'valid', ['rule' => 'numeric'])
->allowEmpty('id', 'create')
->requirePresence('name', 'create')
->notEmpty('name')

return $validator;
}

App \ Model \ Таблица \ ExercisesGroupTable

    $this->belongsTo('Cards', [
'foreignKey' => 'card_id'
]);
public function validationDefault(Validator $validator)
{
$validator
->add('id', 'valid', ['rule' => 'numeric'])
->allowEmpty('id', 'create')
->requirePresence('name', 'create')
->notEmpty('name')
->add('card_id', 'valid', ['rule' => 'numeric'])
->requirePresence('card_id', 'create')
->notEmpty('card_id');

return $validator;
}
public function buildRules(RulesChecker $rules)
{
$rules->add($rules->existsIn(['card_id'], 'Cards'));
return $rules;
}

Мне нужно сохранить ExercisesGroup при сохранении карты, например:

App \ Controller \ Controller \ CardsController

$data = [
'name' => 'foo',
'exercises_groups' =>
[
['name' => 'exercise bar']
]
];
$card = $this->Cards->newEntity();
$card = $this->Cards->patchEntity($card, $data);
$this->Cards->save($card);

Проблема в том, что я получаю эту ошибку проверки:

[
'exercises_groups' => [
(int) 0 => [
'card_id' => [
(int) 0 => 'This field is required'
]
]
]
]

Я знаю, что card_id пуст, но я не могу установить card_id, потому что я еще не сохранил карту, поэтому я не знаю, что это будет, я прочитал документацию и подумал, что фреймворк справится с этим, что я могу сделать неправильно?

Подсказка Cakephp распознает ассоциацию, потому что проверяет данные ExercisesGroup. Вопрос в том, почему они запрашивают внешний ключ, а не заполняются автоматически.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector