【问题标题】:Laravel Livewire sorting non sql dataLaravel Livewire 对非 sql 数据进行排序
【发布时间】:2021-07-06 23:09:47
【问题描述】:

您好我想知道是否可以对不是 sql 表字段的字段进行排序是两个字段的平衡。我有一个表,其中的字段可以排序,但是当我尝试对不是 sql 表字段的字段进行排序时,会出现有意义的错误,

  <th class=" tracking-wider"wire:click="sortBy('balance')" style="cursor: pointer;">Balance</th>
   <td>{{ ((int)$charge->taskscharges - (int)$charge->payment)}}&euro; </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
       ]);
   }

【问题讨论】:

    标签: laravel eloquent laravel-livewire


    【解决方案1】:

    这对你有用吗?

    $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)}}&euro; </td>
    

    由于您正在分页,我认为最好在从数据库中获取分页费用之前计算结果。

    您可以在使用sortBy(function($charge, key){...}) 分页后执行此操作,但您会得到意想不到的结果,因为第二页上的余额可能更高。

    【讨论】:

    • 是否可以在该 selectRaw 上对外部表进行额外排序?例如:->selectRaw('*, taskscharges - payment as balance',) ->with(['customer' => function($query) { $query->select('name as customer_name'); }])
    猜你喜欢
    • 1970-01-01
    • 2017-03-24
    • 1970-01-01
    • 1970-01-01
    • 2018-05-10
    • 2018-02-09
    • 2014-10-28
    • 1970-01-01
    • 2020-01-30
    相关资源
    最近更新 更多