【问题标题】:Property [order_number] does not exist on this collection instance. laravel 9.x此集合实例上不存在属性 [order_number]。拉拉维尔 9.x
【发布时间】:2022-07-08 01:13:56
【问题描述】:

成功付款后,我正在尝试将查询的结果从我的数据库打印到视图中。 但是,当我尝试访问传递给视图的数据时,出现以下错误

Property [order_number] does not exist on this collection instance.

我已经在集合上做了var_dump,它返回了属性和值,但是当我尝试像$orderDetails->column_name那样访问它时,我得到一个错误

下面是我的方法

  public function complete(Request $request)
{

    $paymentId = $request->input('paymentId');
    $payerId = $request->input('PayerID');

    $status = $this->payPal->completePayment($paymentId, $payerId, $request->order_number);

    $order_number = $request->order_number;

    $order = Order::where('order_number', $order_number)->first();
    $order->status = 'processing';
    $order->payment_status = 1;
    $order->payment_method = 'PayPal';
    $order->save();

    Cart::clear();

    $orderDetails = Order::where('order_number', $order_number)->get();

    return view('frontend.pages.order-success', [
        'orderDetails' => $orderDetails
    ]);

    // return redirect()->route('/')->with('message', 'Your Order has been placed successfully! We will contact you with the details you provided');
}

这是我的查看页面

    @extends('frontend.layouts.main')

    @section('title', 'Order Successful')

 @section('content')
 <!-- Main Content -->
 <div id="main-content" class="site-main clearfix">

     <section class="order-detail themesflat-section">
         <div class="themesflat-container">
             <div class="top-order text-center">
                 <h5 class="heading">Congratulation! You’ve completed payment.</h5>
                 <div class="order-infor">
                     <div class="item number">
                         <div class="title">Order Number</div>
                         <div class="content">
                             {{ $orderDetails->order_number }}
                         </div>
                     </div>
                     <div class="item date">
                         <div class="title">Date</div>
                         <div class="content">12 August 2020</div>
                     </div>
                     <div class="item total">
                         <div class="title">Total</div>
                         <div class="content"></div>
                     </div>
                     <div class="item payment">
                         <div class="title">Payment Method</div>
                         <div class="content">Check Payments</div>
                     </div>
                 </div>
             </div>
             <div class="main-order">
                 <div class="heading">Order Details</div>
                 <table class="table-order">
                     <tbody>
                         <tr class="title">
                             <th class="product-infor">Product</th>
                             <th class="price">Price</th>
                         </tr>


                         <tr class="item">
                             <td>
                                 <div class="title-product"><a href="#"></a></div>
                             </td>
                             <td class="price">
                                 <div class="price-inner"></div>
                             </td>
                         </tr>


                     </tbody>
                 </table>
             </div>
         </div>
     </section>

 </div><!-- /#main-content -->
 @endsection

【问题讨论】:

  • $orderDetails 是一个集合,而不是单个记录。使用first() 而不是get(),或者在你的刀片上使用一个环。
  • $order 是一个带有订单的变量,$orderDetails 是一个只有 1 个项目的集合,相同的订单。我建议阅读 Eloquent 文档。
  • 会不会是$request-&gt;input('order_number'); 和其他从请求中获取数据的尝试一样?

标签: php laravel


【解决方案1】:

您试图从集合中获取属性,而不是从单个项目中获取属性,那么它将不起作用。

改变:

$orderDetails = Order::where('order_number', $order_number)->get();

作者:

$orderDetails = Order::where('order_number', $order_number)->firstOrFail();

【讨论】:

    猜你喜欢
    • 2023-03-15
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 2023-01-23
    • 1970-01-01
    • 1970-01-01
    • 2020-11-12
    • 2019-03-23
    相关资源
    最近更新 更多