aGreenCoder's avatar

Array to string conversion For Storing Multiple File In to DB

I Identified the error but don't know How to resolve the error. Basically, the error comes from the Multiple File Input types. Please Look into the code.

Note I use s3 for storing and intervention images for optimizing the image.

public function AgentEmpDataAdd(Request $request){

            //Just Simple Validate

            $value = $request->validate([
                'empName' => ['required'],
                'empEmail' => ['required'],
            ]);
            

            //Create Json Formate For storing in to db And Works Fine
            $request->merge(['empFundForHouse' => json_encode($request->empFundForHouse)]);
            $request->merge(['empLanguage' => json_encode($request->empLanguage)]);

            //Optimized the Image And Upload To S3
            $data_to_update = [];
            if ($request->empPhoto) {
                $data_to_update['empPhoto'] = 'myfolder/Image'.rand(10,10000).'.jpg';
                $image = Image::make($request->file('empPhoto'))->resize(400,400);
                Storage::disk('s3')->put($data_to_update['empPhoto'], $image->stream());
            }

            if ($request->empAadharPhoto) {
                $data_to_update['empAadharPhoto'] = 'myfolder/Image'.rand(10,10000).'.jpg';
                $image = Image::make($request->file('empAadharPhoto'))->resize(400,400);
                Storage::disk('s3')->put($data_to_update['empAadharPhoto'], $image->stream());
            }

            if ($request->empCertificatepPhoto) {
                $data_to_update['empCertificatepPhoto'] = 'myfolder/Image'.rand(10,10000).'.jpg';
                $image = Image::make($request->file('empCertificatepPhoto'))->resize(400,400);
                Storage::disk('s3')->put($data_to_update['empCertificatepPhoto'], $image->stream());
            }

            //Multiple Video Store In to S3
            if($request->empVideo){
                $i=0;
                $Vfiles = $request->empVideo;
                $data_to_update_video = [];
                foreach ($Vfiles as $file){

                    $data_to_update_video[$i]['empVideo'] = Storage::disk('s3')->put('/myfolder', $file);
                    $i++;
                }
                
                $data_to_update['empVideo'] = serialize($data_to_update_video);
                $id = EmpData::create($request->all())->id; //The Problem Is here <-- <-- <-- (Because I can found when dd($request->all() the empVideo still contain array )
                EmpData::find($id)->update($data_to_update);
            }
    }

When I die dump $request->all() Found the error

Image Of DD https://ibb.co/wKw05Cn

Laraver Error Track https://flareapp.io/share/LPdE3Rd7

Please help to solve this error.

0 likes
2 replies
Nakov's avatar
Nakov
Best Answer
Level 73

You can try to replace this:

 $data_to_update['empVideo'] = serialize($data_to_update_video);
$id = EmpData::create($request->all())->id; 

with

$id = EmpData::create($request->except('empVideo') + ['empVideo' => serialize($data_to_update_video)])->id; 

Please or to participate in this conversation.