首页 > 解决方案 > 在 laravel 5.7 中登录的购物车

问题描述

我正在使用登录和无登录实现购物车我正在使用来自 laravel 的购物车包,但它会将购物车项目存储在本地存储中,现在我想登录并在数据库中添加购物车项目。当我没有登录时,项目会添加到本地存储中,但是当我登录时,项目会添加到数据库中,我很困惑。我是如何实现的 我正在分享我开发的代码 需要解决方案

控制器:

public function add_to_cart(Request $req)
    {
        $userId=Session::get('userid');

        $qty=$req->qty;
        $product_id=$req->product_id;
        $product_info=DB::table('product_details')
                     ->join('subcategory','subcategory.sub_id','=','product_details.sub_id')
                     ->select('subcategory.image','subcategory.name_of_subcategory','product_details.*')
                     ->where('product_details.product_id',$product_id)->first();

        $sub_id=$product_info->sub_id;
        //dd($product_info);
        Cart::add(array(
        'id'=>$product_info->product_id,
        'name'=>$product_info->name_of_subcategory,
        'price'=>$product_info->price,
        'qty'=>$qty,
        'options'=>array('image' =>$product_info->image,'description'=>$product_info->description_of_product)
        ));

        if($userId)
        {
            $content=\Cart::Content();
        }  
        // $content=\Cart::Content();
        // dd($content);

        //$data = DB::select('select * from product_details where sub_id = ?',[$sub_id]);
        //return view('productdetails',['data'=>$data]);

        return view('cart');

    }

@extends('layout.header')

@section('content')

<?php 
$contents=\Cart::Content();
?>
<div class="container mt-5">
    <table id="cart" class="table table-hover table-condensed">
                    <thead>
                        <tr>
                            <th>Product</th>
                            <th>Price</th>
                            <th>Quantity</th>
                            <th class="text-center">Subtotal</th>
                            <th></th>
                        </tr>
                    </thead>
                    <tbody>
                        @foreach($contents as $v_contents)
                        <tr>
                            <td data-th="Product">
                                <div class="row">
                                    <div class="col-sm-4 hidden-xs"><img src="{{asset('images/'.$v_contents->options->image)}}" alt="..." class="img-responsive"/ height="100" width="100"></div>
                                    <div class="col-sm-8">
                                        <h4 class="nomargin">{{$v_contents->name}}</h4>
                                        <p>{{$v_contents->options->description}}</p>
                                    </div>
                                </div>
                            </td>
                            <td data-th="Price">{{$v_contents->price}}</td>
                            <td data-th="Quantity">
                                <div class="plus-minus" style="width:150px; ">
                                    <div class="input-group">
                                          <span class="input-group-btn">
                                              <button type="button" class="btn btn-default btn-number" id="subs" >
                                                  <span class="fa fa-minus"></span>
                                              </button>
                                          </span>
                                          <input type="text" id="qty" name="qty" class="form-control input-number" value="{{$v_contents->qty}}" min="1" max="10">
                                          <span class="input-group-btn">
                                              <button type="button" class="btn btn-default btn-number" data-type="plus" id="adds">
                                                  <span class="fa fa-plus"></span>
                                              </button>
                                          </span>
                                    </div>
                                    <input type="hidden" name="product_id" id="product_id" value="{{ $v_contents->rowId}}">
                                </div>

                            </td>
                            <td data-th="Subtotal" class="text-center">{{ $v_contents->total}}</td>
                            <td class="actions" data-th="">

                                <a class="btn btn-danger btn-sm" href="{{ URL::to('/delete-to-cart/'.$v_contents->rowId)}}"><i class="fa fa-trash-o"></i></a>                               
                            </td>
                        </tr>
                        @endforeach
                    </tbody>
                    <tfoot>
                        <!-- <tr class="visible-xs">
                            <td class="text-center"><strong>Total 1.99</strong></td>

                        </tr> -->
                        <tr>
                            <td><a href="#" class="btn btn-warning"><i class="fa fa-angle-left"></i> Continue Shopping</a></td>
                            <td colspan="2" class="hidden-xs"></td>
                            <td class="hidden-xs text-center"><strong>Total {{\Cart::subtotal()}}</strong></td>
                            <td><a href="https://www.paypal.com/webapps/shoppingcart?mfid=1546373779156_cb91e3a2b2dc7&flowlogging_id=cb91e3a2b2dc7#/checkout/shoppingCart" class="btn btn-success btn-block">Checkout <i class="fa fa-angle-right"></i></a></td>
                        </tr>
                    </tfoot>
                </table>
</div>
<script type="text/javascript">
    /*$('#adds').click(function add() {
    var $qty = $("#qty");
    var a = $qty.val();
    a++;
    $("#subs").prop("disabled", !a);
    $qty.val(a);
});

$("#subs").prop("disabled", !$("#qty").val());

$('#subs').click(function subst() {
    var $qty = $("#qty");
    var b = $qty.val();
    if (b >= 1) {
        b--;
        $qty.val(b);
    }
    else {
        $("#subs").prop("disabled", true);
    }
});*/
</script>

<script>
$(document).ready(function(){
  $(document).on('click', '#adds', function(e) { 

    var qty = $('#qty').val();
    var product_id=$('#product_id').val();
    //alert(qty);
    e.preventDefault()
               $.ajaxSetup({
                  headers: {
                      'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content')
                  }
              });
         jQuery.ajax({

                  url: "{{ url('/increment') }}",
                  method: 'get',
                  data: {
                     qty: qty,id:product_id
                  },
                  success: function(result){
                    jQuery('#qty').val(result.qty);

                  }});

  });
 });
</script>
<script>
$(document).ready(function(){
  $(document).on('click', '#subs', function(e) { 

    var qty = $('#qty').val();
    var product_id=$('#product_id').val();
    //alert(qty);
    e.preventDefault()
               $.ajaxSetup({
                  headers: {
                      'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content')
                  }
              });
         jQuery.ajax({

                  url: "{{ url('/decrement') }}",
                  method: 'get',
                  data: {
                     qty: qty,id:product_id
                  },
                  success: function(result){
                    jQuery('#qty').val(result.qty);

                  }});

  });
 });
</script>
@endsection

标签: laravel

解决方案


推荐阅读