[SOLVED] Laravel – retrieve data inside controller – POST x PATCH

Issue

This Content is from Stack Overflow. Question asked by Jorge Mauricio

First important information: I’m new to laravel, so your patience is appreciated.

I’m currently migrating a framework of mine to laravel, so I’m in the early stages.

Currently, I’m trying to set up an API endpoint to make small changes on some records. I’ve already managed to set up a API for inserting records and works perfectly. However, for setting up an API for small changes (patch), I’m having difficulties, probably because I’m not fully familiar with laravel’s Request class.

My successful insert set up looks like this:

routesapi.php

Route::post('/categories/',[ApiCategoriesInsertController::class, 'insertCategories'], function($insertCategoriesResults) {
    return response()->json($insertCategoriesResults);
})->name('api.categories.insert');

appHttpControllersApiCategoriesInsertController.php

// some code 
public function insertCategories(Request $req): array
{
    $this->arrCategoriesInsertParameters['_tblCategoriesIdParent'] = $req->post('id_parent');

    // some code
}

With this set up, I’m able to retrieve “id_parent” data set through POST.

So, I tried to do exactly the same architecture for patch, but doesn’t seem to work:

routesapi.php

Route::patch('/records/',[ApiRecordsPatchController::class, 'patchRecords'], function($patchRecordsResults) {
    return response()->json($patchRecordsResults);
})->name('api.records.patch');

appHttpControllersApiRecordsPatchController.php

// some code
public function patchRecords(Request $req): array
{
    $this->arrRecordsPatchParameters['_strTable'] = $req->post('strTable');

    // some code
}

In this case, I´m using postman (PATCH request) and I´m receiving “strTable” as null.

Any idea of why this is happening or if I should use another method in the Request class?

Thanks!



Solution

You can access parameters on the Request object using one of the following methods:

$req->strTable;

// or

$req->input('strTable');

The input method also accepts a second parameter which will be used as the default return value if the key is not present in the Request.

If you want to check whether or not the Request contains a value before you attempt to access it, you can use filled:

if ($req->filled('strTable')) {
  // The request contains a value
}


This Question was asked in StackOverflow by Jorge Mauricio and Answered by Ruben Hart It is licensed under the terms of CC BY-SA 2.5. - CC BY-SA 3.0. - CC BY-SA 4.0.

people found this article helpful. What about you?