knaka Tech-Blog

AI, IoT, DIYエレクトロニクス, データサイエンスについて投稿予定です。

Laravel 5.8 で、Transactionで DB一括登録など

index:

概要:

前の Laravel 5.8 関係で、
Transactionを、使用して保存で
複数の関連テーブル保存を、一括して行う例となります

環境

php7.3
Laravel 5.8
mysql

参考のコード

github.com

準備など

・表の作成
 Member, Dept

コントローラ

https://github.com/kuc-arc-f/lara58a_2/blob/master/app/Http/Controllers/DeptsController.php
・親テーブル Dept, 下層の Member
 を同時に保存し、コミットします


    /**************************************
     *
     **************************************/    
    public function store(Request $request)
    {
        $inputs = $request->all();
        DB::beginTransaction();
        try {
            $dept = new Dept();
            $dept->fill($inputs);
            $result = $dept->save();
//debug_dump($dept->id );
            if($result && isset($inputs["member"]) ){
                $this->save_members($inputs["member"], $dept->id);
            }
//exit();
            DB::commit();
        } catch (\Exception $e) {
            DB::rollback();
        }