Laravel DataTables中的表渲染后排序问题作为服务实现

时间:2018-07-04 07:49:45

标签: laravel datatables eloquent

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

After clicking the Outstanding column

2 个答案:

答案 0 :(得分:2)

看起来您正在尝试按不是列而是计算值的值进行排序。 因此,这里的主要问题是为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')

答案 1 :(得分:0)

对于SQL函数,其工作方式如下

->addSelect(DB::raw('COUNT(products.id) as product_count'));
->orderByRaw(DB::raw('COUNT(products.id)'),'DESC');