首页 > 解决方案 > 如何从具有许多不同关系的表中删除并删除项目和所有相关项?

问题描述

我正在尝试删除具有以下 6 个关系的产品:

我必须先摆脱这些关系还是不一定?

目前我有这个删除功能的代码

ini_set('max_execution_time', 300);
$products = $request->all();

try {
    DB::beginTransaction();
    foreach ($products as $product) {
        $dbProduct = $this->getProduct($product['SKU']);
        $dbProduct->brand()->delete();
        $dbProduct->tags()->delete();
        $dbProduct->fields()->delete();
        $dbProduct->sizes()->delete();
        $dbProduct->countries()->delete();
        $dbProduct->exportationFactors()->delete();

        Log::error($dbProduct);
        $dbProduct->delete();
    }

    DB::commit();
} catch (Exception $e) {
    DB::rollBack();
    throw new HttpException(500, 'Sucedio un error eliminando la información favor intentar de nuevo');
}

我得到这个错误

SQLSTATE [23000]:完整性约束违规:1451 无法删除或更新父行:外键约束失败(sondel. products,CONSTRAINT products_brand_id_foreignFOREIGN KEY(brand_id)REFERENCES brands( ))(SQL:从哪里id删除。= 2)brandsbrandsid

标签: phplaravel

解决方案


尝试这个:

$dbProduct->delete();
Brand::where('product_id', $dbProduct->id)->delete();
Tags::where('product_id', $dbProduct->id)->delete();

并添加所有表格


推荐阅读