I would like to ask how can i overwrite/update my images inside the form and store in database? I tried doing it but it is not working, i get the id correct but when i upload new image and text, it is not updating my old file. Below i attached my code.
company controller
public function update(Request $request, $id)
{
$this->validate($request, [
'company_logo' => 'required|image|max:2048',
'company' => 'required',
]);
// dd(123);
$company = Company::find($id)->first();
// dd($company);
// $company = Company::where(['companies.id' => $id])->first();
if($request->file != '')
{
$path = public_path().'/uploads/images/';
$file = $request->file;
$filename = $file->getClientOriginalName();
$file->move($path, $filename);
$company->update(['file' => $filename]);
return redirect()->route('company.index');
$company->file = $path.$filename;
}
$company->company = $request->company;
$company->save();
return redirect()->route('company.index');
}
public function insert_logo(Request $request)
{
$company = new Company();
$company->company = request('company');
$company->company_logo = request('company_logo|file|image|max:10,485,760');
// uploading image file to database
if
($file = $request->hasFile('company_logo')) {
$file = $request->file('company_logo');
$filename = time() . '.' .$file->getClientOriginalName();
$destinationPath = public_path('/uploads/images/');
$file->move($destinationPath, $filename);
$company->company_logo = $filename;
}
$company->save();
return back();
}
edit modal for company
<div class="modal" id="modal-edit">
<div class="modal__content">
<div class="intro-y flex items-center p-5">
<h2 class="text-lg font-medium mr-auto">
Edit Company
</h2>
</div>
<form action="{{ route('company.update', $company->id) }}" method="post">
@csrf
@method('PUT')
<div class="intro-y box p-5">
<div>
<label>Company Logo</label>
<div class="mt-2">
<div class="mt-2">
<div class="row mt-4">
<div class="col-md-8">
<input type="file" name="company_logo"/>
</div>
</div>
</div>
</div>
<div class="mt-3">
<input type="text" placeholder="Company Name" name="company"
class="input w-full border col-span-4 form-control tail-select" value="{{ $company->company}}">
</div>
<div class="text-right mt-5">
<button type="button" data-dismiss="modal"
class="button w-24 border text-gray-700 dark:border-dark-5 dark:text-gray-300 mr-1">Cancel</button>
<button type="submit" class="button w-24 bg-theme-1 text-white">Update</button>
</div>
</div>
</div>
</div>
</form>
</div>
<script type="text/javascript">
$('#modal-edit').modal('show')</script>
I might be wrong inside the function but I am not sure where it went wrong. so far only the company name is showing, but still even if I change my company name, and click button update, it wont overwrite my old one
Advertisement
Answer
Form Tag missed enctype="multipart/form-data"
<form enctype="multipart/form-data" action="{{ route('company.update', $company->id) }}" method="post">
once you called find then no need first so remove ->first()
$company = Company::find($id);
It should be $request->company_logo
not $request->file
$company = Company::find($id);
if($request->hasFile('company_logo'))
{
$path = public_path().'/uploads/images/';
$file = $request->company_logo;
$filename = $file->getClientOriginalName();
$file->move($path, $filename);
$company->company_logo =$path.$filename;
}
$company->company = $request->company;
$company->save();
return redirect()->route('company.index');
Usually full path is not saved in db.Better only save filename so that you can keep base path in filesystem configuration.