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

标签 laravel datatables eloquent

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

After clicking the Outstanding column

最佳答案

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

关于laravel - Laravel DataTables 作为服务实现中表渲染后的排序问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51168452/

相关文章:

javascript - 如何防止用户通过在 JS 中向计数器添加额外的秒数来作弊?

php - 如何在 Laravel 中对连接查询进行分块

javascript - 服务器端数据从 C# 加载到 jquery 数据表中

eloquent - 如何删除yii2中的多对多关系(数据透视表)

php - 通过 Codeception 使用存在规则测试 Laravel 5 路由

php - Laravel 5 包开发

jQuery Datatables 绘制在过滤方法后不起作用

jquery - 使用 Jquery 更改可排序表上的升序和降序状态的 aria-label

php - Laravel Eloquent 一对多

database - 当我将多行传递给 Laravel 中的 View 时,如何指定要从数据库加载哪些数据?