ali s. alshara
ali s. alshara

Reputation: 11

laravel route resource update method

I'm work on create to-do app in laravel with JWt all method (index,store,show ..etc) in route resource works well except update in result its work well and get success response but its not change in database

** sorry my english is not good

this is my short codes

api.php

    Route::middleware('jwt.auth')->group(function () {
    Route::resource('/todo', 'API\TodoController');
});

BaseController.php

class BaseController extends Controller
{
    public function sendResponse($result,$message)
    {
        $response=[
            'success'=> true,
            'date' => $result,
            'message'=> $message
        ];
         return response()->json($response,200);
    }

    public function sendError($error,$errorMessages=[],$code=404)
    {
        $response=[
            'success'=> false,
            'message'=> $error
        ];

        if (!empty($errorMessages)) {
            $response['date']=$errorMessages;
        }
         return response()->json($response,$code);
    }}

TodoController.php

class TodoController extends BaseController
{
    .
    .
    .

public function update(Request $request, Todolist $todolist)
    {

        //
        $input = $request->all();
        $validator = Validator::make($input, [

            'title' => 'required | max:255',
            'content' => 'required | max:255',
            'status' => 'required | max:2',
            'start_date' => 'required  ',
            'end_date' => 'required  ',
        ]);

        if ($validator->fails()) {

            return $this->sendError('error validation', $validator->errors());

        }

        $todolist->title = $request->title;
        $todolist->content = $request->content;
        $todolist->status = $request->status;
        $todolist->start_date = $request->start_date;
        $todolist->end_date = $request->end_date;
        $todolist->save();
        return $this->sendResponse($todolist->toArray(), 'update successfully');

    }}

this is results in postman

https://i.sstatic.net/4oHqC.png

Upvotes: 1

Views: 3164

Answers (2)

ali s. alshara
ali s. alshara

Reputation: 11

TodoList.php Model

   <?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Todolist extends Model
{
    //
    protected $table='todolists';
    protected $fillable =[
        'title',
        'content',
        'status',
        'photo_id',
        'date_id',
        'start_date',
        'end_date',
        'user_id'
    ];
}

todo table

https://i.sstatic.net/GGr5Q.png

Upvotes: 0

Igor Carvalho
Igor Carvalho

Reputation: 698

You should refer Model before class

use App\Todolist;
class TodoController extends BaseController
{
    .
    .
    .

public function update(Request $request, Todolist $todolist)
    {

        //
        $input = $request->all();
        $validator = Validator::make($input, [

            'title' => 'required | max:255',
            'content' => 'required | max:255',
            'status' => 'required | max:2',
            'start_date' => 'required  ',
            'end_date' => 'required  ',
        ]);

        if ($validator->fails()) {

            return $this->sendError('error validation', $validator->errors());

        }


        $todolist->title = $request->title;
        $todolist->content = $request->content;
        $todolist->status = $request->status;
        $todolist->start_date = $request->start_date;
        $todolist->end_date = $request->end_date;
        $todolist->save();
        return $this->sendResponse($todolist->toArray(), 'update successfully');

    }}

Upvotes: 2

Related Questions