Laravel Livewire 排序非 sql 数据
Laravel Livewire sorting non sql data
您好,我想知道是否可以对不是 sql 的字段进行排序 table 是两个字段的平衡。我有一个 table 字段可以排序,但是当我尝试对不是 sql 字段的字段进行排序时 table 出现有意义的错误,
<th class=" tracking-wider"wire:click="sortBy('balance')" style="cursor: pointer;">Balance</th>
<td>{{ ((int)$charge->taskscharges - (int)$charge->payment)}}€ </td>
livewire 组件:
public function sortBy($field){
if ($this->sortDirection =='asc'){
$this ->sortDirection ='desc';
}
else{
$this->sortDirection ='asc';
}
return $this ->sortBy = $field;
}
public function render()
{ $charges = charge::query()
->search($this->search)
->orderBy($this->sortBy,$this->sortDirection)
->paginate($this->perPage);
return view('livewire.charges.show',['charges'=>$charges
]);
}
这对你有用吗?
$charges = charge::query()
->selectRaw('*, taskscharges - payment as balance')
->search($this->search)
->orderBy($this->sortBy, $this->sortDirection)
->paginate($this->perPage);
<th class=" tracking-wider"wire:click="sortBy('balance')" style="cursor: pointer;">Balance</th>
<td>{{ ((int)$charge->balance)}}€ </td>
既然你在分页,我认为最好在从数据库中获取分页费用之前计算结果。
您可以在分页后使用 sortBy(function($charge, key){...})
但是您会得到意想不到的结果,因为第二页的余额可能更高。
您好,我想知道是否可以对不是 sql 的字段进行排序 table 是两个字段的平衡。我有一个 table 字段可以排序,但是当我尝试对不是 sql 字段的字段进行排序时 table 出现有意义的错误,
<th class=" tracking-wider"wire:click="sortBy('balance')" style="cursor: pointer;">Balance</th>
<td>{{ ((int)$charge->taskscharges - (int)$charge->payment)}}€ </td>
livewire 组件:
public function sortBy($field){
if ($this->sortDirection =='asc'){
$this ->sortDirection ='desc';
}
else{
$this->sortDirection ='asc';
}
return $this ->sortBy = $field;
}
public function render()
{ $charges = charge::query()
->search($this->search)
->orderBy($this->sortBy,$this->sortDirection)
->paginate($this->perPage);
return view('livewire.charges.show',['charges'=>$charges
]);
}
这对你有用吗?
$charges = charge::query()
->selectRaw('*, taskscharges - payment as balance')
->search($this->search)
->orderBy($this->sortBy, $this->sortDirection)
->paginate($this->perPage);
<th class=" tracking-wider"wire:click="sortBy('balance')" style="cursor: pointer;">Balance</th>
<td>{{ ((int)$charge->balance)}}€ </td>
既然你在分页,我认为最好在从数据库中获取分页费用之前计算结果。
您可以在分页后使用 sortBy(function($charge, key){...})
但是您会得到意想不到的结果,因为第二页的余额可能更高。