php - 加入所有表时从多个表中删除数据php larvel
问题描述
我的代码有问题。我必须使用 5 个表中的 id 删除数据,这些表由主键和外键连接。
这是我尝试过的,但它会显示添加订阅表 ID。但已经添加了订阅表 ID。
$subscription = DB::table('tbl_asset_subscription')->where('id',$post['asset_id'])->get();
foreach($subscription as $row)
{
DB::table('tbl_asset_subscription')->where('id',$row->id)->delete();
}
$orderId = array();
foreach($subscription as $row)
{
$order = DB::table('tbl_asset_order')->where('subscription_id',$row->id)->first();
$orderId[] = $order->id;
}
foreach($orderId as $row)
{
DB::table('tbl_asset_payment')->where('order_id',$row->id)->delete();
DB::table('tbl_asset_order')->where('id',$row->id)->delete();
}
DB::table('tbl_asset_versions')->where('asset_id',$post['asset_id'])->delete();
DB::table('tbl_assets')->where('id',$post['asset_id'])->delete();
// DB::table('tbl_asset_subscription')->where('asset_id',$post['asset_id'])->delete();
echo(json_encode(array("result" => true)));
{
"message": "SQLSTATE[23000]: Integrity constraint violation: 1451 Cannot delete or update a parent row: a foreign key constraint fails (`piccoscript`.`tbl_asset_subscription`, CONSTRAINT `fk_tbl_asset_subscription_tbl_assets` FOREIGN KEY (`asset_id`) REFERENCES `tbl_assets` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION) (SQL: delete from `tbl_assets` where `id` = 1)",
"exception": "Illuminate\\Database\\QueryException",
"file": "/var/www/html/piccoscript/vendor/laravel/framework/src/Illuminate/Database/Connection.php",
"line": 664,
"trace": [
{
"file": "/var/www/html/piccoscript/vendor/laravel/framework/src/Illuminate/Database/Connection.php",
"line": 624,
"function": "runQueryCallback",
"class": "Illuminate\\Database\\Connection",
"type": "->"
},
解决方案
$orderId 不是关联数组,因此出现错误。试试这个代码。
foreach($subscription as $row)
{
$order = DB::table('tbl_asset_order')->where('subscription_id',$row->id)->first();
$orderId[] = array(
'id' => $order->id
);
}
foreach($orderId as $row)
{
DB::table('tbl_asset_payment')->where('order_id',$row->id)->delete();
DB::table('tbl_asset_order')->where('id',$row->id)->delete();
}
DB::table('tbl_asset_versions')->where('asset_id',$post['asset_id'])->delete();
DB::table('tbl_assets')->where('id',$post['asset_id'])->delete();
// DB::table('tbl_asset_subscription')->where('asset_id',$post['asset_id'])->delete();
echo(json_encode(array("result" => true)));
推荐阅读
- android - Android Emulator InetAddress 提供异常/不正确的 IP 地址
- excel - Excel 公式 Steping in 错误显示“䀁”
- javascript - React 组件模式在加载时打开并且从不关闭
- excel - 基于VBA中的一列对两个不同的范围进行排序
- node.js - 获取并将对象传递给节点js渲染方法
- r - 在R中将非图形数据输出为pdf
- reactjs - 如何在音频 src 中使用对象 url
- excel-formula - Excel - 小计,但仅在满足特定条件时(SUMIF/AVERAGEIF)
- mailchimp - Mailchimp API 和 mc:repeatable
- java - 如何限制Java中未知方法参数的接口方法调用