У меня есть две модели, которые связаны с ассоциацией и имеют много ассоциаций в тортах 2.x. Я пытаюсь передать приложение на Cake 3.3. В общем, у меня возникла проблема с репликацией функциональности «keepExisting», найденной в ассоциациях Cake 2.x. Прямо сейчас я пытаюсь использовать «сквозную» функциональность, но я не уверен, что я лаю по правильному дереву.CakePHP от 2x до 3x, HABTM с keepExisting
У меня есть следующие таблицы:
class ContestsTable extends Table
{
/**
* Initialize method
*
* @param array $config The configuration for the Table.
* @return void
*/
public function initialize(array $config)
{
parent::initialize($config);
$this->table('contests');
$this->displayField('name');
$this->primaryKey('id');
$this->addBehavior('Timestamp');
$this->belongsToMany('Events', [
'through' => 'ContestsEvents'
]);
}
}
class EventsTable extends Table
{
/**
* Initialize method
*
* @param array $config The configuration for the Table.
* @return void
*/
public function initialize(array $config)
{
parent::initialize($config);
$this->table('events');
$this->displayField('name');
$this->primaryKey('id');
$this->addBehavior('Timestamp');
$this->belongsToMany('Events', [
'saveStrategy' => 'append',
'through' => 'ContestsEvents'
]);
}
}
class ContestsEventsTable extends Table
{
public function initialize(array $config) {
$this->belongsTo('Contests');
$this->belongsTo('Events');
}
}
Когда я сохранить первоначальный конкурс с ассоциированными событиями, сохранить в порядке и запись ассоциации, созданные в соединительной таблице. Когда я редактирую запись конкурса и изменяю список событий, добавляется любое из выбранных событий ... но старые, которые больше не выбраны, не удаляются. Вторая проблема заключается в том, что для уже существующих отношений создается новая запись объединения. Я хотел бы сохранить уже существующие записи, а не создавать новые. Позже в приложении я буду использовать id записей соединений в дополнительных отношениях ... и я не хочу, чтобы идентификатор восстанавливался каждый раз, когда обновляемая запись о соревнованиях обновляется.
Надеюсь, у меня есть смысл описать то, что я пытаюсь сделать. Но в простейшей форме я пытаюсь реплицировать функциональность, найденную с помощью опции «unique» => «keepExisting», включенной в Cake 2x, просто не может взломать код, как это сделать в Cake 3.3?
Заранее за вашу помощь.