Laravel 5.1 数据库按几列排序

Posted

技术标签:

【中文标题】Laravel 5.1 数据库按几列排序【英文标题】:Laravel 5.1 database order by few columns 【发布时间】:2016-01-29 22:28:09 【问题描述】:

我想按几列对数据库中的结果进行排序。 我尝试这样:

Video::select('videoss.name as videoname', 'videos.*')->join('users', 'users.id', '=', 'videos.user_id')
        ->orderBy('videos.name', 'desc')
        ->orderBy('videos.views', 'desc')
        ->paginate(15);

但它仅按名称排序。按名称排序后如何添加按视图排序。

【问题讨论】:

您的数据库中是否有多个同名视频? 有可能,因为用户添加了这个。 从逻辑上看不出问题,orderBy 接受多列,我认为是数据相关的。 @user3458952 除非您实际上有多个具有完全相同名称的视频,否则您无法告诉我们排序是否在两个字段上都没有按照您的意愿进行。 @watcher 确实提出了一个有效的观点。请从您的表中发布一些示例数据以及您的查询结果对于该示例数据是什么。 【参考方案1】:

您是否尝试过像这样在 cmets here 中解释的数组:

$user->orders = array(array('column' => 'name', 'direction' => 'desc'), array('column' => 'email', 'direction' => 'asc'));

【讨论】:

以上是关于Laravel 5.1 数据库按几列排序的主要内容,如果未能解决你的问题,请参考以下文章

按r中的列对数据帧进行排序[重复]

Groupby 和 sum 几列 pandas

如何在 Laravel 5.1 中按多列对 Illuminate Collection 进行排序?

elasticsearch仅按几个字段排序,而对其他字段抛出错误

Laravel 5.1 请求未知数据库类型枚举

在 Laravel 5.1 中关闭数据库连接