Reputation: 19
I'm having a problem updating 1 record with Laravel (v8). Below is my code.
in Controller
public function update(Request $request, Category $category)
{
$input = $request->all();
$validator = Validator::make($input, [
'name' => 'required|unique:categories',
], [
'name.required' => 'Name is required'
]);
if ($validator->fails()) {
return $this->sendError($validator->errors());
}
$category->name = $input['name'];
$category->description = $input['description'];
$category->status = $input['status'];
$category->save();
return $this->sendResponse(new CategoryResource($category), 'Success.');
}
in Resource
class CategoryResource extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function toArray($request)
{
return [
'id' => $this->id,
'name' => $this->name,
'description' => $this->description,
'status' => $this->status,
];
}
}
in Models
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Category extends Model
{
use HasFactory;
protected $fillable = [
'id',
'name',
'description',
'status'
];
protected $primaryKey = 'id';
public $incrementing = false;
}
When I get the list enter image description here
But when I update: enter image description here
Hope to get your help. Thanks a lot
Upvotes: 1
Views: 79
Reputation: 157
HTTP PUT/PATCH request doesn't support multipart/form-data
as request body, you'll need to use application/x-www-form-urlencoded
as request body.
Upvotes: 1