首页 > 解决方案 > 在 Laravel DataTables as a Service 实现中表渲染后的排序问题

问题描述

我已经将 laravel dataTable 实现为服务。最初的两列是实际的 id 和名称,因此,我可以在表格呈现后按 asc/desc 对其进行排序。但是接下来的几列在执行几次计算后呈现,即这些值不是直接从任何列中获取的,而是经过处理的。我无法对执行计算的这些列进行排序,并且出现此错误。而且我知道它正在寻找那个特定的列,例如我在数据库中没有的杰出金额,而是从其他一些表中的两个或更多列中计算出的数量。关于如何克服这个问题的任何建议?

点击未完成列后

标签: laraveldatatableseloquent

解决方案


看起来您正在尝试按不是列的值排序,而是按计算值排序。所以这里的主要问题是给 Eloquent/MySql 提供排序所需的数据。

// You might need to do some joins first
->addSelect(DB::raw('your_calc as outstanding_amount'))
->orderBy('outstanding_amount') // asc can be omitted as this is the default

// Anternative: you don't need the value sorted by
// Don't forget any joins you might need
->orderByRaw('your_calc_for_outstanding_amount ASC')

推荐阅读