Моя структура данных выглядит следующим образом:CakePHP Database Design
Company hasMany Regions
Region hasMany Markets
Market hasMany Stores
Store hasMany Employees
У меня также есть соответствующий belongsTo, где это необходимо.
Я использовал внешние ключи для ассоциаций. Например, каждый магазин имеет market_id.
Когда я удаляю запись Компании, также удаляется правильный регион. Однако мне пришло в голову, что мне также необходимо, чтобы все связанные рынки, магазины и сотрудники были удалены. Или, если я удалю рынок, мне потребуются все магазины и сотрудники.
Что является наиболее подходящим способом достижения этого?
- Могу ли я добавить дополнительные внешние ключи к столам? Например, нужны ли региону region_id и company_id в дополнение к market_id?
Привет, спасибо за ответ. Это работает на одном уровне. Я добавил, что зависит от модели CompanyMany Regions. Это привело к ожидаемому результату, связанные регионы были удалены. Однако рынки, магазины и сотрудники не были удалены. (Я добавил зависимые от всех моделей). Затем я попытался добавить компанию hasMany Markets в модель компании. Это приводит к следующей ошибке: «Неустранимая ошибка: объявления класса не могут быть вложенными ...» Мне нужно, чтобы рекурсивное удаление было распространено по многим таблицам, от Компании до Региона до Рынка, чтобы Хранить Работодателю на основании удаления Компании. – Jose
Хорошо, я понял! Для вызова delete в CompaniesController.php необходимо, чтобы каскад был установлен в true. Это выглядит как $ this-> Company-> delete ($ id, true). Кроме того, для запуска на других уровнях, если я начну удаление на Market, я добавлю каскад в true, чтобы также связать Stores and Employees с удалением. – Jose