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