如何处理试图在laravel中获取非对象错误的属性?

Posted

技术标签:

【中文标题】如何处理试图在laravel中获取非对象错误的属性?【英文标题】:how to handle Trying to get property of non-object error in laravel? 【发布时间】:2020-06-13 19:03:35 【问题描述】:

我正在从购物车中删除商品,删除后我正在显示新的结果。但是购物车表中的所有项目都已删除,我收到此错误

试图获取非对象的属性(查看: D:\xampp\htdocs\avitra\resources\views\ordersummary.blade.php)

用于以下查询。当所有项目从购物车中删除并显示时,它无法从购物车表中获取任何记录,因此它返回空值并出现错误?我如何在 laravel 中处理这个错误?

$getCartResult=DB::table('product_details')
                     ->join('cart','cart.product_id','=','product_details.product_id')
                     ->join('subcategory','product_details.sub_id','=','subcategory.sub_id')
                     ->select('subcategory.image','subcategory.name_of_subcategory','product_details.*','cart.*')
                     ->where('cart.user_id',$userid)
                     ->get();

刀片文件:

<?php $getCartResult=DB::table('product_details')
                     ->join('cart','cart.product_id','=','product_details.product_id')
                     ->join('subcategory','product_details.sub_id','=','subcategory.sub_id')
                     ->select('subcategory.image','subcategory.name_of_subcategory','product_details.*','cart.*')
                     ->where('cart.user_id',$userid)
                     ->get();
                 ?>
                 <?php
                if (!empty($getCartResult)) 
                 ?>
                 <div class="card-body cart_show" style="overflow-y: scroll;height: 300px;display:none;">
                    @foreach($getCartResult as $v_contents)
                    <div class="row">
                        <div class="col-sm-3 mt-3">
                            <div>
                                <img src="asset('images/'.$v_contents->image)" class="img-fluid">
                            </div>
                            <center>
                            <div class="input-group mt-2" style="width:100px">

                                  <button type="button" class="cart-btn btn-default btn-number cart_qtyminus"  data-type="minus" data-id="<?php echo $v_contents->cart_id;?>" data-value="<?php echo $v_contents->product_id;?>">
                                      <span class="fa fa-minus cart-fa"></span>
                                  </button>

                             <!--  <input type="text" name="cart_qty" class="form-control input-number" value="$v_contents->qty" min="1" max="10"> -->
                              <span class="cart_quantity " style="border: 1px solid;height: 30px;width:30px;"><?php echo $v_contents->qty; ?></span>

                                  <button type="button" class="cart-btn btn-default btn-number cart_qtyplus" data-type="plus" data-id="<?php echo $v_contents->cart_id;?>" data-value="<?php echo $v_contents->product_id;?>">
                                      <span class="fa fa-plus cart-fa"></span>
                                  </button>

                            </div>
                            </center>
                        </div>
                        <div class="col-sm-5 mt-3">
                            <div>
                                <span><b>$v_contents->name_of_subcategory</b></span>
                            </div>
                            <div class="mt-2">
                                <span>Seller : Avitra Ayurved</span>
                            </div>
                            <?php  $subtotal=$v_contents->discount_price*$v_contents->qty; ?>
                            <div class="mt-2">
                                Price :<span class="cart_subtotal"><?php echo $subtotal; ?></span>
                            </div>
                            <div class="mt-2">
                                <span><a class="btn btn-sm mt-3 cart_delete" data-id="<?php echo $v_contents->cart_id;?>"><span style="color: #FBA842;"><b>REMOVE</b></span></a></span>
                            </div>
                        </div>
                        <div class="col-sm-4">
                            <div class="mt-2">
                                <span>Delivery by Fri Jan 24 | Free</span>
                            </div>
                        </div>
                    </div><hr>
                    @endforeach
                    <div>
                        <span style="float: right;"><button class="btn btn-sm continue cart_payment_show"><span><b>CONTINUE</b></span></button></span>
                    </div>
                </div>
              <?php  ?>

【问题讨论】:

【参考方案1】:

您收到此错误是因为您的查询没有返回任何结果,并且您正在尝试访问它的属性,例如$getCartResult-&gt;id

要解决此问题,您可以在刀片模板上使用 if 条件检查项目是否存在,例如

@if(!empty($getCartResult))
 // your code
@endif

【讨论】:

@AshutoshMali 你能分享 ordersummary.blade.php 文件吗?还有您收到此错误的行号 我如何分享这个文件? 另外请分享您的错误截图。您可以通过编辑问题来上传图片 让我们continue this discussion in chat。【参考方案2】:

我认为问题在于您正在尝试访问已删除的行。检查删除项目后返回的查询。

【讨论】:

以上是关于如何处理试图在laravel中获取非对象错误的属性?的主要内容,如果未能解决你的问题,请参考以下文章

试图在 laravel eloquent 中获取非对象错误的属性“名称”

试图在 laravel 5.4 上获取非对象错误的属性

试图在 laravel 5.5 中获取非对象的属性

laravel 试图获取非对象的属性

如何修复“试图获取非对象的属性”Laravel 5

Laravel Join:试图获取非对象的属性