Удалить все связанные данные таблицы в CAKEPHP 3 одним запросом - PullRequest
0 голосов
/ 07 января 2019

У меня есть таблица продуктов и несколько таблиц, связанных с ней по product_id. Я хочу удалить все строки этого product_id из всех других таблиц, когда продукт удаляется из таблицы продуктов. Теперь, как можно сделать это удобным способом? Я пытаюсь, как показано ниже:

$productTable = [
        'related_products',
        'quantities',
        'products_tags',
        'products_settings',
        'products_details',
        'categories_products',
    ];
    $tableObj = TableRegistry::get('Products');
    $query = $tableObj->query();
    $result = $query->deleteAll()
        ->contain($productTable)
        ->where(['store_id' => $storeId])
        ->execute();

1 Ответ

0 голосов
/ 07 января 2019

В Cakephp есть зависимое свойство для удаления связанных данных из других таблиц.

Когда для зависимого ключа установлено значение true, а объект удален, связанные записи модели также удаляются. В этом случае мы установили его на Значение true, поэтому удаление пользователя также приведет к удалению его связанного адреса.

Чтобы использовать это, просто создайте association и добавьте dependent true. Например,

/* In a Table's initialize method. */
$this->hasMany('Comments', [
    'dependent' => true,  /* Add this line */
]);

Cake -> Связи - Соединение таблиц вместе

...