Php 传递到Livewire组件的数据发生更改,并导致代码中出现异常
我有一个类,它将合并来自2个有说服力的模型的数据,以传递给一个可排序的表 RewardDataTable.phpPhp 传递到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
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