Php Laravel的orderBy+;jquery数据表

Php Laravel的orderBy+;jquery数据表,php,laravel,laravel-5,datatables,Php,Laravel,Laravel 5,Datatables,在我的数据库中,以下是我拥有的 我试着按价格查询所有东西和订单 $service_plans = DB::table('service_plans') ->orderBy('price', 'asc') ->get(); 我一直在 我是不是错过了什么或者做了什么我不该做的事 有什么提示吗 请记住,我使用的是jQuery DataTables由于您使用的是DataTables jQuery插件,请删除控制器查询中的orderBy 相反,通过datatables进行排序(默认情况下

在我的数据库中,以下是我拥有的

我试着按价格查询所有东西和订单

$service_plans = DB::table('service_plans') ->orderBy('price', 'asc') ->get();
我一直在

我是不是错过了什么或者做了什么我不该做的事

有什么提示吗


请记住,我使用的是jQuery DataTables

由于您使用的是DataTables jQuery插件,请删除控制器查询中的
orderBy

相反,通过datatables进行排序(默认情况下会这样做):


还有一个很好的用于datatables的小Laravel包,用于设置数据。检查它是否有用:

您可以将
$casts
属性添加到您的
ServicePlan
模型中。这将把列视为隐式数据类型,而不管数据库数据类型如何

class ServicePlan extends Model
{
    /**
     * The attributes that should be casted to native types.
     *
     * @var array
     */
    protected $casts = [
        'price' => 'integer',
    ];
}

价格字段的类型为字符串,因此将其更改为逗号后带2个数字的十进制

在mysql控制台中运行:

ALTER TABLE service_plans MODIFY price DECIMAL(10,2);
!!!在生产环境中修改表格时,请确保在调用
ALTER table
之前已复制了表格:

CREATE TABLE service_plans_bak AS SELECT * FROM service_plans;

数据库中
price
列的数据类型是什么?另外,您不是偶然使用DataTables进行显示的,是吗?在查询之后立即使用
dd($service\u plans)
,并查看输出。如果它在那里被排序(我想是这样),你知道拉威尔做得很正确,而且它是其他的东西,它正在求助于。order by正在工作…但是看起来你的数据被作为字符串而不是int…是的。我使用的是datatable。如果您使用的是DataTables,它将在第一列自动排序,这将使您的
orderBy
看起来不工作。他使用的是DataTables jQuery插件。它自动对数据进行排序,而不考虑给定的对象(基于datatable的第一列)。问题不在于price字段的数据类型。默认情况下,jquerydatatables按第一列对表进行排序。有关更多说明,请参阅。@Gyrocode.com查看标题:“orderBy in Laravel”,因此作者告知他在排序方面存在问题,而有问题的作者没有定义他有jQuery数据表(只有标记:Datatables),但另一个问题是:如果客户说“我不需要一页中的200条记录”,该怎么办,所以他会回到服务器端必须返回已经排序和分页的数据的想法。我同意这个问题是模糊的,但是有
datatables
tag,OP确认他在注释中使用jquerydatatables。使用jQuery DataTables,排序可以在客户端或服务器端完成,但不能像OP那样完成。我相信这是正确的答案,或者无论如何都应该完成。假设数据表在某个时刻停止使用,这个问题将再次出现。没有任何理由否决这个答案。问题不在于价格字段的数据类型。默认情况下,jquerydatatables按第一列对表进行排序。请参阅以了解更多解释。有意义。所以这不是laravel的问题-也许应该删除laravel标记?OP使用laravel,因此标记
laravel
是有意义的。建议Laravel使用jQuery DataTables的优秀软件包。@Gyrocode.com确保OP使用Laravel,但对于使用CodeIgniter、Rails或Python的人来说,这个问题肯定会出现。这个问题的标题和标记方式,我们没有帮助那些开发人员。根据我的场景,我想这是最干净的方式。如果您放弃数据表或使用其他解决方案,我仍然可能会对服务器端进行排序。;)
CREATE TABLE service_plans_bak AS SELECT * FROM service_plans;