我的员工表和组表之间存在多对多关系。我已经创建了数据透视表,并且一切正常。但是,我的 employees 表上有一个 sortOrder 列,我用它来确定他们的显示顺序。 sortOrder 列中值为 1 的员工应排在第一位,值为 2 的员工应排在第二位,依此类推。 (如果按降序排序,则向后排序)sortOrder 列是一个允许空值的整数列。
我已经设置了我的组模型以按排序列对员工进行排序,但我遇到了一个问题。空值总是首先显示。我试过使用 ISNULL 和类似的 SQL 方法来代替使用的常规“asc”或“desc”,但我只得到一个错误。
这是我的组模型中的代码:
class Group extends Eloquent {
public function employees()
{
return $this->belongsToMany("Employee")->orderBy('sortOrder', 'asc');
}
}
这是我在控制器中用来访问我的模型的内容:
$board = Group::find(6)->employees;
Laravel 中最后排序 NULL 值的技巧是什么?
原文由 eagle0042 发布,翻译遵循 CC BY-SA 4.0 许可协议
Laravel 没有考虑
ISNULL
方法,但是,您可以将其作为原始查询传入并仍然使用它,因为它比IF
语句更有效,结果将保留如果您超过 1000000 名员工(接受的答案),也是如此,如下所示:更新: 您还可以使用 orderByRaw() 方法: