Php 传递到Livewire组件的数据发生更改,并导致代码中出现异常

Php 传递到Livewire组件的数据发生更改,并导致代码中出现异常,php,laravel,Php,Laravel,我有一个类,它将合并来自2个有说服力的模型的数据,以传递给一个可排序的表 RewardDataTable.php class RewardDataTable { public $purchase_number; public $user_name; public $referral; public $total_amount; public $reward_point; public $date; public $hierarchy_lev

我有一个类,它将合并来自2个有说服力的模型的数据,以传递给一个可排序的表

RewardDataTable.php

class RewardDataTable
{
    public $purchase_number;
    public $user_name;
    public $referral;
    public $total_amount;
    public $reward_point;
    public $date;
    public $hierarchy_level;
}
我在下面的刀片文件(reward.blade.php)中构建数据,并将数据传递到livewire组件(livewire reward data table.blade.php)中

repair.blade.php

@php
    $self_purchases = App\Models\Purchase::where('user_id', Auth::user()->id)->get();

    $reward_data_tables = [];
    foreach($self_purchases as $self_purchase)
    {
        $self_reward = $self_purchase->rewards->first();
        $reward_data_table = new App\DataTables\RewardDataTable();
        $reward_data_table->purchase_number = $self_purchase->purchase_number;
        $reward_data_table->user_name = Auth::user()->name;
        $reward_data_table->date = $self_purchase->created_at;
        $reward_data_table->total_amount = $self_purchase->total_amount;
        if(is_null($self_reward))
        {
            $reward_data_table->reward_point = "-";
        } else {
            $reward_data_table->reward_point = $self_reward->reward_point;
        }
        $reward_data_table->referral = "-";
        $reward_data_table->hierarchy_level = "-";
        array_push($reward_data_tables, $reward_data_table);
    }
@endphp

<div class="{{ Constant::CONTENT_OUTER_FRAME }}">
    <div class="{{ Constant::TITLE_STYLE }}">
        <p>Rewards</p>
    </div>

    <div class="{{ Constant::COMPONENT_OUTER_FRAME }}">
        @livewire('livewire-reward-data-table', ['reward_data_tables' => $reward_data_tables])
    </div>
</div>
<div class="{{ Constant::LIVEWIRE_MAIN_COMPONENT_STYLE }}">
    <div class="p-2">
        <table id="table1" class="text-gray-900 table-auto border-collapse border border-gray-300">
            <thead>
                <tr class="border-b border-gray-300">
                    <th wire:click="sortBy('purchase_number')" class="p-4 hover:bg-gray-300 cursor-pointer">Purchase Id</th>
                    <th wire:click="sortBy('date')" class="p-4 hover:bg-gray-300 cursor-pointer">Date</th>
                    <th wire:click="sortBy('user_name')" class="p-4 hover:bg-gray-300 cursor-pointer">Purchaser</th>
                    <th wire:click="sortBy('hierarchy_level')" class="p-4 hover:bg-gray-300 cursor-pointer">Hierarchy Level</th>
                    <th wire:click="sortBy('total_amount')" class="p-4 hover:bg-gray-300 cursor-pointer">Amount (RM)</th>
                    <th wire:click="sortBy('reward_point')" class="p-4 hover:bg-gray-300 cursor-pointer">Reward Points</th>
                </tr>
            </thead>
            <tbody>
                @foreach ($reward_data_tables as $reward_data_table)
                    <div class="flex w-full">
                    <tr class="p-4 hover:bg-gray-300">
                        <td class="p-4 hover:bg-red-300 text-center">{{ $reward_data_table->purchase_number }}</td>
                        <td class="p-4 hover:bg-red-300 text-center">{{ $reward_data_table->date }}</td>
                        <td class="p-4 hover:bg-red-300 text-center">{{ $reward_data_table->user_name }}</td>
                        <td class="p-4 hover:bg-red-300 text-center">{{ $reward_data_table->hierarchy_level }}</td>
                        <td class="p-4 hover:bg-red-300 text-center">{{ $reward_data_table->total_amount }}</td>
                        @if (Constant::LEVEL_ZERO_REWARD_ENABLED)
                            <td class="p-4 hover:bg-red-300 text-center">{{ $reward_data_table->reward_point }}</td>
                        @else
                            <td class="p-4 hover:bg-red-300 text-center">-</td>
                        @endif
                    </tr>
                    </div>
                @endforeach
            </tbody>
        </table>
    </div>
</div>
在第1点和第2点(参见上面函数mount()和render()中的代码),奖励数据表中的数据是正确的。但是在点3(在sortBy()函数中)触发click事件之后,数据会发生更改,因此它使我的usort代码无法工作

正确数据:

array:3 [▼
  0 => App\DataTables\RewardDataTable {#1464 ▼
    +purchase_number: "0000000001"
    +user_name: "Member 1"
    +referral: "-"
    +total_amount: 20.0
    +reward_point: 1.0
    +date: Illuminate\Support\Carbon @1603408696 {#1465 ▶}
    +hierarchy_level: "-"
  }
  1 => App\DataTables\RewardDataTable {#1461 ▼
    +purchase_number: "0000000021"
    +user_name: "Member 1"
    +referral: "-"
    +total_amount: 120.0
    +reward_point: 6.0
    +date: Illuminate\Support\Carbon @1603681602 {#1397 ▶}
    +hierarchy_level: "-"
  }
  2 => App\DataTables\RewardDataTable {#1456 ▼
    +purchase_number: "0000000022"
    +user_name: "Member 1"
    +referral: "-"
    +total_amount: 10.0
    +reward_point: 0.5
    +date: Illuminate\Support\Carbon @1603695207 {#1452 ▶}
    +hierarchy_level: "-"
  }
]
更改的数据:

array:3 [▼
  0 => array:7 [▼
    "purchase_number" => "0000000001"
    "user_name" => "Member 1"
    "referral" => "-"
    "total_amount" => 20
    "reward_point" => 1
    "date" => "2020-10-22T23:18:16.000000Z"
    "hierarchy_level" => "-"
  ]
  1 => array:7 [▼
    "purchase_number" => "0000000021"
    "user_name" => "Member 1"
    "referral" => "-"
    "total_amount" => 120
    "reward_point" => 6
    "date" => "2020-10-26T03:06:42.000000Z"
    "hierarchy_level" => "-"
  ]
  2 => array:7 [▼
    "purchase_number" => "0000000022"
    "user_name" => "Member 1"
    "referral" => "-"
    "total_amount" => 10
    "reward_point" => 0.5
    "date" => "2020-10-26T06:53:27.000000Z"
    "hierarchy_level" => "-"
  ]
]
它们不是RewardDataTable对象,而是更改为array对象,这使得我的usort代码抛出错误

ErrorException
Trying to get property 'purchase_number' of non-object
我无法找到LiveWireWardDataTable.php中数据更改的原因。我需要帮助来指导我找出发生这种情况的原因并找到解决方案

ErrorException
Trying to get property 'purchase_number' of non-object