Принадлежит многим ассоциациям в CakePHP 3, как сохранить отношения и сохранить ассоциации во вторичной области? - PullRequest
0 голосов
/ 14 февраля 2019

Мне нужна помощь для создания отношения ownToMany между двумя таблицами.Мне нужно, чтобы это отношение было постоянным, а «состояние отношения» должно быть сохранено в дополнительном поле в таблице отношений.

Вот немного фона.Я строю веб-сайт для ресторана.

В этом ресторане есть несколько карт (Brasserie, Gastronomique ...):

cartes

id | name | description

Каждая карта имеет много разделов (закуски, салат, мясо, рыба ...).Каждый раздел может состоять из нескольких карт.

cartes_rubriques

id | name | description | comment

Карты и разделы имеют отношение belongsToMany благодаря таблице

cartes_cartes_rubriques

id | carte_id | rubrique_id| order | description | comment | active (boolean)

Мне нужно, чтобы это отношение было постоянным.Отношение может быть временно удалено, так как некоторые разделы могут быть сезонными, но мне нужно сохранить заказ , описание и комментарий для сохранения.

Я пробовал 'saveStrategy' => 'append' , но это только добавляет новые записи в cartes_cartes_rubriques.

CartesTable.php

$this->belongsToMany('Rubriques', [
    'foreignKey' => 'carte_id',
    'targetForeignKey' => 'rubrique_id',
    'through' => 'cartes_rubriques'
]);

CartesRubriquesTable.php

$this->belongsToMany('Cartes', [
    'foreignKey' => 'rubrique_id',
    'targetForeignKey' => 'carte_id',
    'through' => 'cartes_rubriques'
]);

CartesCartesRubriquesTable.php

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

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

В идеале моя стратегия заключается в сохранении этих отношений и переключении cartes_cartes_rubriques.active .

Кажется ли это хорошей / возможной стратегией?

Как сделать переключение на cartes_cartes_rubriques.active ?

У вас есть лучший вариант?

Спасибо за вашу помощь.Антонио

...