Я новичок в CakePHP и всем этим с ассоциациями. Когда я хочу удалить категорию, я также хочу удалить компетенции, которые связаны с категорией. Это мои настольные модели:
CategoriesTable.php
class CategoriesTable extends Table
{
public function initialize(array $config)
{
parent::initialize($config);
$this->belongsToMany('Competences');
}
}
CompetencesTable.php
class CompetencesTable extends Table
{
public function initialize(array $config)
{
parent::initialize($config);
$this->belongsToMany('Categories');
$this->belongsToMany('CategoriesCompetences');
}
}
CategoriesCompetencesTable.php
class CategoriesCompetencesTable extends Table
{
public function initialize(array $config)
{
parent::initialize($config);
$this->belongsTo('Categories');
$this->hasMany('Competences');
}
}
Когда я удаляю категорию, она удаляет строки в таблице ссылок, но не в компетенциях в CompetenceTable. Я знаю, что что-то забыла, но не могу понять, что.
Я не уверен, почему у вас есть ассоциация hasMany в вашей таблице присоединения к компетенциям. Есть ли причина? Это должно принадлежать. Если нет, попробуйте установить в настройках ассоциаций dependent => true
hasMany доц.
Смотрите документацию для hasMany (). Это хорошая идея, чтобы внимательно прочитать всю страницу.
public function initialize(array $config)
{
$this->hasMany('Competences', [
'foreignKey' => 'article_id',
'dependent' => true,
]);
}
Других решений пока нет …