Jan 5, 2018
0
Level 1
Combine input and image array and save to database
Hi there, my question based on my last post https://laracasts.com/discuss/channels/laravel/insert-array-as-new-value-in-database-table
How can I save the images name to db columns based on user input. Current store syntax:
if ( $request->hasFile('img_file') ) {
$files = $request->file('img_file');
$imgname = explode(',', $request->img_name);
$imgdesc = explode(',', $request->img_desc);
$merge = array_combine ($imgname, $imgdesc);
foreach ( $merge as $img_name => $img_desc ) {
$userimage = $request->user()->userimages()->create([
'img_name' => $img_name,
'img_desc' => $img_desc,
]);
}
foreach ($files as $file) {
$ext = $file->getClientOriginalExtension();
$newfilename = str_replace(' ' , '-', $img_name) . '.' . $ext;
$place = 'public/users/' . $user->id . '-' . $user->reg_num . '/' . $newfilename;
Storage::put($place, File::get($file));
$userimage->img_file = $newfilename;
$userimage->update();
}
}
Current result: the above syntax work, but it will create many files. For example, if user upload 2 files, it'll create 4 files, not 2.
Desired result: The file name for each uploaded file will be replaced based on "img_name" from input. So if user upload 2 files with img_name = ["A","B"], the uploaded files will be "A.ext" and "B.ext".
Thx.
Please or to participate in this conversation.