I would like to ask you that update method doesn't work with my code in controller on Laravel.
I want to do is updating information that are required
As details of code below, I want to update "Shop Information" and I tried:
now, it is "public function update(Request $request, $id)"
using "if" to make conditional branch that it is requested or not.
{
$requestData = Shop::find($id);
$requestData->name = $request->name;
if(empty($request->email)){
$request->email = NULL;
} else {
$requestData->email = $request->email;
}
if(empty($request->description)){
$request->description = NULL;
} else {
$requestData->description = $request->description;
}
if($request->hasFile('image')){
$fileName = $request->file('image')->getClientOriginalName();
$path = $request->file('image')->storeAs('shops', $fileName, 'public');
$requestData['image'] = '/storage/shops'.$path;
}
$requestData->update();
return redirect()->route('shops');
}
The update()
method expects an array as an argument. You should make use of the save()
method instead. Also you should not have those if
statements since you are not validating your input.
That being said, your code should be like this instead:
public function update(Request $request, $id) {
$requestData = Shop::find($id);
$requestData->name = $request->name;
$requestData->email = $request->email;
$requestData->description = $request->description;
if($request->hasFile('image')){
$fileName = $request->file('image')->getClientOriginalName();
$path = $request->file('image')->storeAs('shops', $fileName, 'public');
$requestData['image'] = '/storage/shops'.$path;
}
$requestData->save();
return redirect()->route('shops');
}