Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

Nandakumar's avatar

Eloquent and Transaction

I'm getting this there is no active transaction error from the below code. Can you guys help me out! What am i doing wrong here?

public function add(Request $request) { try { DB::beginTransaction(); $client_id=common_info::create([ 'Name' => $request->c_name, 'Pan' => $request->c_pan, 'Nature' => $request->c_nature, 'Mobile' => $request->c_phone, 'Alternate_Mobile' => $request->c_alt_phone, ]); $client_id=$client_id->id;

    if($request['dob']!=""){
        $path = "";
        business_details::create([
            'client_id' => $client_id,
            'DOB' => $request->dob,
            'Line 1' => $request->address1,
            'Line 2' => $request->address2,
            'Line 3' => $request->address3,
            'State' => $request->state,
            'Pincode' => $request->pincode,
            'Email' => $request->t1_email,
            'GST' => $request->GST,
            'CIN' => $request->CIN,
            'MSME' => $request->MSME,
            'IEC' => $request->IEC,
            'PF' => $request->PF,
            'TAN' => $request->TAN,
            'ESIC' => $request->ESIC,
            'MUNICIPAL' => $request->MUNICIPAL,
            'OTHER' => $request->OTHER,
            'GST_Document' => $this->get_path($request,'BuisnessDetails','GST_Document',$client_id),
            'CIN_Document' => $this->get_path($request,'BuisnessDetails','CIN_Document',$client_id),
            'MSME_Document' => $this->get_path($request,'BuisnessDetails','MSME_Document',$client_id),
            'IEC_Document' => $this->get_path($request,'BuisnessDetails','IEC_Document',$client_id),
            'PF_Document' => $this->get_path($request,'BuisnessDetails','PF_Document',$client_id),
            'TAN_Document' => $this->get_path($request,'BuisnessDetails','TAN_Document',$client_id),
            'ESIC_Document' => $this->get_path($request,'BuisnessDetails','ESIC_Document',$client_id),
            'MUNICIPAL_Document' => $this->get_path($request,'BuisnessDetails','MUNICIPAL_Document',$client_id),
            'OTHER_Document' => $this->get_path($request,'BuisnessDetails','OTHER_Document',$client_id),

        ]);
    }

    //Managerial_person
    for ($i = 1; $i <= $request->m_count; $i++) {
        if($_POST['p_firstname'.$i]!=""){
        $mid=managerial_person_details::create([
            'client_id'=>$client_id,
            'Picture'=> $this->get_path($request,'ManagerialDetails','p_picture'.$i,$client_id),
            'First Name'=>$request['p_firstname'.$i],
            'Middle Name'=>$request['p_middlename'.$i],
            'Last Name'=>$request['p_lastname'.$i],
            'Fathers First Name'=>$request['f_firstname'.$i],
            'Fathers Middle Name'=>$request['f_middlename'.$i],
            'Fathers Last Name'=>$request['f_lastname'.$i],
            'Line 1'=>$request['p_address1'.$i],
            'Line 2'=>$request['p_address2'.$i],
            'Line 3'=>$request['p_address3'.$i],
            'State'=>$request['p_state'.$i],
            'Pincode'=>$request['p_pincode'.$i],
            'Email'=>$request['p_personemail'.$i],
            'Mobile'=>$request['p_number'.$i],
            'Alternate Mobile'=>$request['p_alternate_number'.$i],
            'DOB'=>$request['p_dob'.$i],
            'PAN'=>$request['PAN'.$i],
            'PASSPORT'=>$request['PASSPORT'.$i],
            'DIN'=>$request['DIN'.$i],
            'AADHAR'=>$request['AADHAR'.$i],
            'VOTER ID'=>$request['VOTER'.$i],
            'DRIVING LICENSE'=>$request['DRIVING'.$i],
            'Others'=>$request['Others'.$i],
            'PAN_Document'=> $this->get_path($request,'ManagerialDetails','PAN'.$i.'_Document',$client_id),
            'PASSPORT_Document'=>$this->get_path($request,'ManagerialDetails','PASSPORT'.$i.'_Document',$client_id),
            'DIN_Document'=>$this->get_path($request,'ManagerialDetails','DIN'.$i.'_Document',$client_id),
            'AADHAR_Document'=>$this->get_path($request,'ManagerialDetails','AADHAR'.$i.'_Document',$client_id),
            'VOTER ID_Document'=>$this->get_path($request,'ManagerialDetails','VOTER ID'.$i.'_Document',$client_id),
            'DRIVING LICENSE_Document'=>$this->get_path($request,'ManagerialDetails','DRIVING LICENSE'.$i.'_Document',$client_id),
            'Others_Document'=>$this->get_path($request,'ManagerialDetails','Others'.$i.'_Document',$client_id),
        ]);
        $mid=$mid->id;
        $b_cnt=1;
        while(isset($request[$b_cnt."_bank_name".$i])) {
            if($request[$b_cnt . "_bank_name" . $i]!="" && $request[$b_cnt . "_bank_name" . $i]!=null) {
                bank_details::create([
                    'Client_id' => $mid,
                    'Bank_Name' => $request[$b_cnt . "_bank_name" . $i],
                    'Bank_Branch' => $request[$b_cnt . "_bank_branch" . $i],
                    'Bank_Account_Number' => $request[$b_cnt . "_bank_account_number" . $i],
                    'Bank_IFSC_code' => $request[$b_cnt . "_bank_ifsc_code" . $i]
                ]);
            }
            $b_cnt++;
        }
    }}

    for($i=1;$i<=$request->l_count;$i++){
        if($request['nature_of_login'.$i]!=""){
            client_login::create([
                'client_id'=>$client_id,
                'Nature of Login'=>$request['nature_of_login'.$i],
                'Username'=>$request['user_id'.$i],
                'Password'=>$request['password'.$i],
            ]);
        }
    }

    for ($i=1;$i<=$request->custom_tab_count;$i++){
        $count=$request[$i."custom_tab_field_count"];
        $table_name = $client_id . "_" . $request[$i . "custom_tab_name"];
        if($count>0) {
                $res = Schema::create($table_name, function (Blueprint $table) {
                    $table->id();
                });
            $data_value = [];
            for ($j = 1; $j <= $count; $j++) {
                if(isset($request[$i . "custom_tab_field_name" . $j])) {
                    $field = $request[$i . "custom_tab_field_name" . $j];
                    $value = $request[$i . "custom_tab_field_answer" . $j];
                    DB::select("alter table " . $table_name . " add column " . $field . " varchar(120)");
                    $data_value[$field] = $value;
                }
            }
            DB::table($table_name)->insert($data_value);
        }
    }
    records::create([
        "user_id"=>Auth::id(),
        "Record"=>$request->c_name,
        "Tab_Name"=>"Client Record",
        "Field_Name"=>"",
        "Old_Value"=>"",
        "New_Value"=>"",
        "Operation"=>"New Record Added"
    ]);
    DB::commit();
        return response(json_encode("Success"),200);
    }
    catch (\Exception $e){
        DB::rollBack();
        return response($e->getMessage(),500);
    }
}
0 likes
2 replies
tykus's avatar
tykus
Best Answer
Level 104

In MySQL, you cannot have a transaction whenever you are creating tables (amongst a number of other table and database operations); there is an implicit commit meaning your transaction is ended.

$res = Schema::create($table_name, function (Blueprint $table) {
    $table->id();
});
1 like

Please or to participate in this conversation.