Laravel创建数据前删除指定列值为1的行出错:误删所有旧数据
问题解决:Laravel中错误删除所有数据的修复
你的核心需求是在创建新数据前,删除penjualan表中status_pesanan列值为1的所有行,但原代码误用了分组统计逻辑,导致意外删除全表旧数据。以下是修复方案:
正确的删除逻辑
替换原代码中错误的删除语句,直接通过where条件精准匹配目标数据:
DB::table('penjualan') ->where('status_pesanan', 1) ->delete();
原代码错误分析
原代码里的groupBy('status_pesanan')->havingRaw('COUNT(status_pesanan) = 1')是在按status_pesanan分组后,删除行数等于1的分组对应的所有数据,这和你要删除status_pesanan=1的需求完全无关。当表中存在多个分组满足行数为1的条件时,就会批量删除大量非目标数据,甚至全表数据。
完整修正后的Create方法
public function create() { // 仅删除status_pesanan值为1的行 DB::table('penjualan') ->where('status_pesanan', 1) ->delete(); $penjualan = new Penjualan(); $penjualan->nama_pemesan = 1; $penjualan['no_nota'] = tambah_nol_didepan($penjualan->no_nota+1, 5); $penjualan->alamat_pemesan = 1; $penjualan->telepon_pemesan = 1; $penjualan->acc_desain = 1; $penjualan->total_item = 0; $penjualan->total_harga = 0; $penjualan->diskon = 0; $penjualan->bayar = 0; $penjualan->diterima = 0; $penjualan->id_user = auth()->id(); $penjualan->save(); session(['id_penjualan' => $penjualan->id_penjualan]); return redirect()->route('transaksi-baru.index'); }
内容的提问来源于stack exchange,提问作者Firdan Mahendra Wardana
相关产品推荐
相关产品推荐

