Исключение ошибки Laravel API: неопределенная переменная:

#json #laravel #postman

#json #laravel #почтальон

Вопрос:

Я пытаюсь начать с этого laravel API для CRUD. Пока что show и delete работают (я использую postman amp; json script), но почему-то, когда я пытаюсь выполнить post-запрос, я получаю эту ошибку:

 
ErrorException: Undefined variable: requests in file C:xampphtdocspsdsystemsappHttpControllersCustomerController.php on line 35
Stack trace:
  1. ErrorException-amp;>() C:xampphtdocspsdsystemsappHttpControllersCustomerController.php:35
  2. IlluminateFoundationBootstrapHandleExceptions-amp;>handleError() C:xampphtdocspsdsystemsappHttpControllersCustomerController.php:35
  3. AppHttpControllersCustomerController-amp;>store() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminateRoutingController.php:54
  4. call_user_func_array() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminateRoutingController.php:54
  5. IlluminateRoutingController-amp;>callAction() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminateRoutingControllerDispatcher.php:45
  6. IlluminateRoutingControllerDispatcher-amp;>dispatch() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminateRoutingRoute.php:219
  7. IlluminateRoutingRoute-amp;>runController() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminateRoutingRoute.php:176
  8. IlluminateRoutingRoute-amp;>run() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminateRoutingRouter.php:680
  9. IlluminateRoutingRouter-amp;>IlluminateRouting{closure}() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminateRoutingPipeline.php:30
 10. IlluminateRoutingPipeline-amp;>IlluminateRouting{closure}() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminateRoutingMiddlewareSubstituteBindings.php:41
 11. IlluminateRoutingMiddlewareSubstituteBindings-amp;>handle() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminatePipelinePipeline.php:163
 12. IlluminatePipelinePipeline-amp;>IlluminatePipeline{closure}() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminateRoutingPipeline.php:53
 13. IlluminateRoutingPipeline-amp;>IlluminateRouting{closure}() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminateRoutingMiddlewareThrottleRequests.php:58
 14. IlluminateRoutingMiddlewareThrottleRequests-amp;>handle() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminatePipelinePipeline.php:163
 15. IlluminatePipelinePipeline-amp;>IlluminatePipeline{closure}() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminateRoutingPipeline.php:53
 16. IlluminateRoutingPipeline-amp;>IlluminateRouting{closure}() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminatePipelinePipeline.php:104
 17. IlluminatePipelinePipeline-amp;>then() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminateRoutingRouter.php:682
 18. IlluminateRoutingRouter-amp;>runRouteWithinStack() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminateRoutingRouter.php:657
 19. IlluminateRoutingRouter-amp;>runRoute() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminateRoutingRouter.php:623
 20. IlluminateRoutingRouter-amp;>dispatchToRoute() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminateRoutingRouter.php:612
 21. IlluminateRoutingRouter-amp;>dispatch() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminateFoundationHttpKernel.php:176
 22. IlluminateFoundationHttpKernel-amp;>IlluminateFoundationHttp{closure}() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminateRoutingPipeline.php:30
 23. IlluminateRoutingPipeline-amp;>IlluminateRouting{closure}() C:xampphtdocspsdsystemsvendorfideloperproxysrcTrustProxies.php:57
 24. FideloperProxyTrustProxies-amp;>handle() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminatePipelinePipeline.php:163
 25. IlluminatePipelinePipeline-amp;>IlluminatePipeline{closure}() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminateRoutingPipeline.php:53
 26. IlluminateRoutingPipeline-amp;>IlluminateRouting{closure}() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminateFoundationHttpMiddlewareTransformsRequest.php:21
 27. IlluminateFoundationHttpMiddlewareTransformsRequest-amp;>handle() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminatePipelinePipeline.php:163
 28. IlluminatePipelinePipeline-amp;>IlluminatePipeline{closure}() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminateRoutingPipeline.php:53
 29. IlluminateRoutingPipeline-amp;>IlluminateRouting{closure}() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminateFoundationHttpMiddlewareTransformsRequest.php:21
 30. IlluminateFoundationHttpMiddlewareTransformsRequest-amp;>handle() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminatePipelinePipeline.php:163
 31. IlluminatePipelinePipeline-amp;>IlluminatePipeline{closure}() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminateRoutingPipeline.php:53
 32. IlluminateRoutingPipeline-amp;>IlluminateRouting{closure}() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminateFoundationHttpMiddlewareValidatePostSize.php:27
 33. IlluminateFoundationHttpMiddlewareValidatePostSize-amp;>handle() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminatePipelinePipeline.php:163
 34. IlluminatePipelinePipeline-amp;>IlluminatePipeline{closure}() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminateRoutingPipeline.php:53
 35. IlluminateRoutingPipeline-amp;>IlluminateRouting{closure}() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminateFoundationHttpMiddlewareCheckForMaintenanceMode.php:62
 36. IlluminateFoundationHttpMiddlewareCheckForMaintenanceMode-amp;>handle() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminatePipelinePipeline.php:163
 37. IlluminatePipelinePipeline-amp;>IlluminatePipeline{closure}() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminateRoutingPipeline.php:53
 38. IlluminateRoutingPipeline-amp;>IlluminateRouting{closure}() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminatePipelinePipeline.php:104
 39. IlluminatePipelinePipeline-amp;>then() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminateFoundationHttpKernel.php:151
 40. IlluminateFoundationHttpKernel-amp;>sendRequestThroughRouter() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminateFoundationHttpKernel.php:116
 41. IlluminateFoundationHttpKernel-amp;>handle() C:xampphtdocspsdsystemspublicindex.php:55

  

Я уже изменил свой первичный ключ внутри своей модели, поскольку я создал свой первичный ключ, который обычно является просто «id» на «CustomerID»

API:

 <?php

use IlluminateHttpRequest;

Route::middleware('auth:api')->get('/user', function (Request $request) {
    return $request->user();
});

//List Customers Details
Route::get('customers','CustomerController@index');

//List Single Customer Detail
Route::get('customer/{CustomerID}','CustomerController@show');

//Create new Customer Details
Route::post('customer','CustomerController@store');

//Update Customer Details
Route::put('customer','CustomerController@store');

//Delete Customer Details
Route::delete('customer/{CustomerID}','CustomerController@destroy');
  

Контроллер:

 <?php

namespace AppHttpControllers;

use IlluminateHttpRequest;
use AppHttpRequests;
use AppCustomer;
use AppHttpResourcesCustomer as CustomerResource;

class CustomerController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return IlluminateHttpResponse
     */
    public function index()
    {
        // Get customer details
        $customers = Customer::paginate(10);

        //Return collection of Customers as a resource
        return CustomerResource::collection($customers);
    }


    /**
     * Store a newly created resource in storage.
     *
     * @param  IlluminateHttpRequest  $request
     * @return IlluminateHttpResponse
     */
    public function store(Request $request)
    {
        $customer = $requests->isMethod('put') ? Customer::findOrFail($request->CustomerID) : new Customer;

        $customer->CustomerID = $request->input('CustomerID');
        $customer->Customer = $request->input('Customer');
        $customer->Address = $request->input('Address');

        if($customer->save()) {
            return new CustomerResource($customer);
        }
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $CustomerID
     * @return IlluminateHttpResponse
     */
    public function show($CustomerID)
    {
        //Get single customer detail
        $customer = Customer::findOrFail($CustomerID);

        //Return single customer as a resource
        return new CustomerResource($customer);



    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return IlluminateHttpResponse
     */
    public function destroy($CustomerID)
    {
         //Get single customer detail
         $customer = Customer::findOrFail($CustomerID);

         if($customer->delete()) {
            return new CustomerResource($customer);
         }
    }
}
  

Модель:

 <?php

namespace App;

use IlluminateDatabaseEloquentModel;

class Customer extends Model
{
    protected $primaryKey = 'CustomerID';

}

  

Я ожидаю, что post-запрос действительно будет функционировать

Ответ №1:

Здесь опечатка

     public function store(Request $request)
    {
        $customer = $requests->isMethod('put') ? Customer::findOrFail($request->CustomerID) : new Customer;
  

дополнительный s в переменной запроса должен быть

     public function store(Request $request)
    {
        $customer = $request->isMethod('put') ? Customer::findOrFail($request->CustomerID) : new Customer;
  

Ответ №2:

в вашем коде опечатка:

 $customer = $requests->isMethod('put') ? Customer::findOrFail($request->CustomerID) : new Customer; // remove the `s`, it's $request
  

Это должно быть:

 $customer = $request->isMethod('put') ? Customer::findOrFail($request->CustomerID) : new Customer;