为了账号安全,请及时绑定邮箱和手机立即绑定

如果最后一个被删除,则获取下一个 id

如果最后一个被删除,则获取下一个 id

PHP
肥皂起泡泡 2022-07-09 10:04:15
我有 bill 和 product_bill 表。我需要在 product_bill 表中使用 bill_id 并且我应该首先创建账单,所以 id 这样做了public function store(Request $request){    if( Bill::first() == null )    {        $bill_id = 1;    }    else {        $bill_id = Bill::orderBy('id','desc')->first()->id +1 ;    }    // dd($bill_id);    $brand_id = auth('brand')->id();    $bill = new Bill();    $bill->brand_id = $brand_id;    $bill->date = Carbon::today();    $data = $request->all();    $products = [];    $total = 0;    for($i = 0 ; $i<count($data['id']) ; $i++)    {           $prod = new ProductsBill();        $prod->product_id = $data['id'][$i] ;        $prod->quantity = $data['quantity'][$i];        $prod->bill_id = $bill_id;        $products[] = $prod->attributesToArray();        $price = Product::find($prod->product_id)->price;        $total += $price * $prod->quantity;    }    $bill->total = $total;    $bill->save();    ProductsBill::insert($products);    return redirect()->back();}当我删除任何账单时,product_bill 表中的新 bill_id 会获得最后一个的下一个数字,我需要知道下一个将创建该 ID,谢谢。
查看完整描述

2 回答

?
繁星coding

TA贡献1797条经验 获得超4个赞

如果您在变量save()上使用函数$bill,您将通过访问$bill->id. 如果您想确保您的交易完成,您可以使用DB transactions。


use DB;


class ... {


   ...


    public function store(Request $request)

    {

        $brand_id = auth('brand')->id();

        $bill = new Bill();

        $bill->brand_id = $brand_id;

        $bill->date = Carbon::today();


        DB::beginTransaction();


        try{

            $bill->save();


            $data = $request->all();

            $products = [];

            $total = 0;

            for($i = 0 ; $i<count($data['id']) ; $i++)

            {   

                $prod = new ProductsBill();

                $prod->product_id = $data['id'][$i] ;

                $prod->quantity = $data['quantity'][$i];

                $prod->bill_id = $bill->id;

                $products[] = $prod->attributesToArray();

                $price = Product::find($prod->product_id)->price;

                $total += $price * $prod->quantity;

            }

            $bill->total = $total;

            $bill->save();

            ProductsBill::insert($products);


            DB::commit();


            return redirect()->back();


        } catch(\Illuminate\Database\QueryException $ex){ 

            DB::rollBack();

            // Exception redirect here


        }

    }


    ...


}


查看完整回答
反对 回复 2022-07-09
?
慕运维8079593

TA贡献1876条经验 获得超5个赞

如果我正确理解您的问题,您可能可以使用 mysql 函数来获取最后插入的 ID 并添加一个。

https://dev.mysql.com/doc/refman/8.0/en/information-functions.html#function_last-insert-id


查看完整回答
反对 回复 2022-07-09
  • 2 回答
  • 0 关注
  • 86 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信