Я использую CakePHP v3.17 с Postgres 9.4.
Я пытаюсь заставить $this->SomeTable->deleteAll([...])
также удалить записи в таблице соединений.
Изображение шинной системы с таблицей для Stops
и таблицей для Routes
. Остановки связаны со многими маршрутами (поскольку на каждом из них может останавливаться несколько автобусных маршрутов), а маршруты, очевидно, связаны со многими остановками.
RoutesTable.php:
$this->belongsToMany('Stops');
Таблица остановок.php:
$this->belongsToMany('Routes');
Вот логика удаления, которую я хочу использовать, но НЕ работает, потому что записи в таблице соединений остались:
$stopsTable = TableRegistry::get('Stops');
$stopsTable->deleteAll(['agency_id' => $agency->id]);
$routesTable = TableRegistry::get('Routes');
$routesTable->deleteAll(['agency_id' => $agency->id]);
Вот логика, которая ДЕЙСТВИТЕЛЬНО работает, но неэффективно, потому что приходится перебирать каждую остановку:
$stopsTable = TableRegistry::get('Stops');
foreach ($agency->stops as $stop) {
$stopsTable->delete($stop);
}
$routesTable = TableRegistry::get('Routes');
$routesTable->deleteAll(['agency_id' => $agency->id]);
Как лучше/правильнее это сделать?
Вот похожий вопрос, но для v2.x, поэтому здесь он не обязательно актуален.
'dependent' => true,
для вашего помощника, я не уверен, что сейчас это верно по умолчанию. - person floriank   schedule 20.04.2016delete()
иdeleteAll()
не две разные функции? - person emersonthis   schedule 21.04.2016delete()
вызываетdeleteAll()
в обратном вызове. Я понимаю, что вы сейчас говорите. Спасибо - person emersonthis   schedule 21.04.2016deleteAll()
ассоциации, связанные с этой сущностью, котораяdelete()
обрабатывается - person emersonthis   schedule 21.04.2016delete()
ing каждой сущности. - person emersonthis   schedule 21.04.2016