Search code examples
vue.jsaxioshttprequestvuexlaravel-api

API post request not reaching the application


i'm new to laravel and i'm facing a painful problem.

I'm using Crinsane/LaravelShoppingcart in my ecommerce api and i'm trying to send a post request with axios in vuejs that adds a product to the cart by sending the product id and the quantity. The problem is the id and quantity are not reaching the application although i'm pretty sure i specified the correct route link in axios and i'm getting "No query results for model [App\Product]." which i assume means that the controller function that handles the request is working but the id is not being sent/transformed to the resource collection. I don't know if the problem is with the package i'm using or the code or something else.

this is axios request


   addCart(item) {
                 axios
                 .post('/api/cart/add', item)
                 .then(response => (response.data.data))
                 .catch(error => console.log(error.response.data))

this is the route :

Route::post('cart/add', [
  'uses' =>  'ShoppingController@store',
  'as' => 'cart.add'
]);

this is the cart collection

  public function toArray($request)
    {
      return [
        'id' => $this->id,
        'qty' => $this->qty
      ];
    }

this is the controller

    public function store(){

      $pdt = Product::findOrFail(request()->id);
      
      $cart = Cart::add([
        'id' => $pdt->id,
        'name' => $pdt->name,
        'qty' => request()->qty,
        'price' => $pdt->price
      ]);

and this is the product model

class Product extends Model
{
    protected $fillable = [
      'name', 'description', 'image', 'category', 'quantity', 'price', 'sold','remaining','rating', 'bestSelling', 'featured'
    ];

}

Thank you in advance


Solution

  • So i found that it needed a json object to work and i had to put this code at the end of the store method :

    return response()->json(['cart' => $cart], 201);