laravel 8 update eloquent relationships hasmany

Viewed 251

My UPDATE function is as follows; I manually set some fields in the users table. In other words, it is necessary to update only the name part from the incoming request. If the lawyer has been removed from the edit form, it must also be removed from the users table. If the lawyer name has been updated, it should also be updated in the table.

How can I complete the update process.

    public function update(Request $request, LegalPursuit $legalPursuit, $id)
{
    $request->validate([
        'BRANCH_ID'        => 'required',
        'MAIN_ACCOUNT_ID'     => 'required',
        'DEPOSITOR_ID'   => 'required',

        'ACCOUNT_HOLDER'        => 'required|max:255',
        'CURRENT_SCREEN_BALANCE'     => 'required',
        'TRL_EQUIVALENT'   => 'required'
    ]);

    //dd($request->all());

    if($request->input('PROVISION') == 'on'){
        $request->request->add(['PROVISION' => 'yes']);
    }

    $request->FOLLOW_UP_DATE              = \Carbon\Carbon::parse($request->input('FOLLOW_UP_DATE'))->format('Y-m-d');
    $request->DATE_OF_ATTORNEY_SUBMISSION = \Carbon\Carbon::parse($request->input('DATE_OF_ATTORNEY_SUBMISSION'))->format('Y-m-d');
    $request->PROVISION_DATE              = \Carbon\Carbon::parse($request->input('PROVISION_DATE'))->format('Y-m-d');

    $request->request->add(['FOLLOW_UP_DATE'              => $request->FOLLOW_UP_DATE]); //dd request
    $request->request->add(['DATE_OF_ATTORNEY_SUBMISSION' => $request->DATE_OF_ATTORNEY_SUBMISSION]); //dd request
    $request->request->add(['PROVISION_DATE'              => $request->PROVISION_DATE]); //dd request
                    
    if(is_array($request->input('LAWYERS')) AND !empty($request->input('LAWYERS'))){

        $lawyerArray = $request->input('LAWYERS');

        //dd($lawyer_array);

        $lawyerArray->each(function($lawyer) use ($user) {
                $user->lawyerArray()->updateOrCreate(
                    [
                    'legalpursuit_id' => $id],
                    [
                        'role_id' => 1,
                        'name' => $request->input('LAWYERS'),
                        'email' => 'aa@'.rand().'.com',
                        'email_verified_at' => now(),
                        'password'=> Hash::make('1q2w3e4r'),
                        'department' => 'Avukat',
                        'gender' => 'Kadın',
                        'marital_status' => 'Bekar',
                        'job' => 'Avukat',
                        'phone' => '+9055555',
                        'internal_no' => '0',
                        'active' => '0',
                        'deleted' => '0'
                    ]
                );
            }
        );

        for($x = 0; $x < count($request->input('LAWYERS')); $x++){
            
            User::updateOrInsert(
                ['legalpursuit_id' => $id],
                [ 
                'role_id' => 1,
                'name' => $request->input('LAWYERS'),
                'email' => 'aa@'.rand().'.com',
                'email_verified_at' => now(),
                'password'=> Hash::make('1q2w3e4r'),
                'department' => 'Avukat',
                'gender' => 'Kadın',
                'marital_status' => 'Bekar',
                'job' => 'Avukat',
                'phone' => '+9055555',
                'internal_no' => '0',
                'active' => '0',
                'deleted' => '0'
                ]);
        }

        /*foreach($lawyer_array as $lawyer) {
           $updateLaywer = 
        }

        dd($updateLaywer);

        /*
        $getUsers      = DB::table('users')
                            ->select(['users.id'])
                            ->leftJoin('legalpursuit', 'users.legalpursuit_id', '=', 'legalpursuit.ID')
                            ->where('legalpursuit.ID', '=', $id)
                            ->get();

        $lawyersChanged = DB::table('users')
                                ->whereIn('id', $getUsers)
                                ->update(
                                    [
                                        'name' => ''
                                    ]
                                );
        */







        
        //echo "asdfasdfasdf";exit;
       /*
        $lawyersChanged = User::updateOrCreate(
                                        ['legalpursuit_id' => $id],
                                        ['name'            => $request->input('LAWYERS')]
                            );

//echo $lawyersChanged; exit;*/

    }else{

        $getUsers      = DB::table('users')
                            ->select(['users.id'])
                            ->leftJoin('legalpursuit', 'users.legalpursuit_id', '=', 'legalpursuit.ID')
                            ->where('legalpursuit.ID', '=', $id)
                            ->get();

        $getUsers->delete();
        //echo "aaaaaaaa";exit;
    }

    if(is_array($request->input('GUARANTORS')) AND !empty($request->input('GUARANTORS'))){

        echo "asdfasdfadsf";exit;

        $guarantorsChanged = Guarantors::updateOrCreate(
                                        ['legalpursuit_id' => $id],
                                        ['name'            => $request->input('GUARANTORS')]
                        );
    }else{

        //echo "hdfghdfghdfghdfgh";exit;
        $getGuarantors  = DB::table('guarantors')
                            ->select(['guarantors.id'])
                            ->leftJoin('legalpursuit', 'guarantors.legalpursuit_id', '=', 'legalpursuit.ID')
                            ->where('legalpursuit.ID', '=', $id)
                            ->delete();

        //dd($getGuarantors);

        //$getGuarantors->delete();
    }

    if($request->input('REMOVE_FILES')){
        $getCurrentFiles = DB::table('files')
        ->select(['files.ID'])
        ->leftJoin('legalpursuit', 'files.legalpursuit_id', '=', 'legalpursuit.ID')
        ->where('legalpursuit.ID', '=', $id)
        ->delete();
    }

    LegalPursuit::where('ID',$id)->update(
        $request->only(
            [
                  'BRANCH_ID',
                  'MAIN_ACCOUNT_ID',
                  'DEPOSITOR_ID',
                  'ACCOUNT_HOLDER',
                  'FOLLOW_UP_DATE',
                  'CURRENT_SCREEN_BALANCE',
                  'CURRENCY',
                  'TRL_EQUIVALENT',
                  'DATE_OF_ATTORNEY_SUBMISSION',
                  'PROVISION',
                  'PROVISION_DATE',
                  'LAWSUIT_ID',
                  'ASSURANCE',
                  'DEED_PLATE',
                  'APPRAISAL_VALUE',
                  'LIEN_PRICE',
                  'DETERMINED_GUARANTEES',
                  'LEVY_INFO',
                  'LAST_STATUS'
              ]
          )
    );

    if($request->hasFile('FILES')) {

        foreach ($request->file('FILES') as $fl) {

            $fileName = time().'_'.$fl->getClientOriginalName();
            $fileExt  = $fl->getClientOriginalExtension();
            $filePath = $fl->store('public/files');

            $filex                  = new Files;
            $filex->legalpursuit_id = $id;
            $filex->name            = $fileName;
            $filex->type            = $fileExt;
            $filex->label           = $filePath;
            $filex->descript        = $fileName.'-'.$fileExt.'--'.$filePath;
            $filex->status          = 'on';
            $filex->save();
        }

    }
    return redirect()->back()->with('success', 'Kayıt Başarılı Bir Şekilde Güncellendi...');

}
0 Answers
Related