Summer Sale! All accounts are 50% off this week.

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.