gpt4 book ai didi

php - 如何在 Laravel 中使用 Eloquent 对 NULL 值进行最后排序

转载 作者:IT王子 更新时间:2023-10-28 23:54:42 25 4
gpt4 key购买 nike

我的员工表和组表之间存在多对多关系。我已经创建了数据透视表,并且一切正常。但是,我的 employees 表上有一个 sortOrder 列,我用它来确定他们的显示顺序。 sortOrder 列中值为 1 的员工应排在第一位,值为 2 的员工应排在第二位,依此类推。 (如果降序排序,则向后排序)sortOrder 列是一个允许空值的整数列。

我已经设置了我的组模型以按排序列对员工进行排序,但是我遇到了一个问题。空值总是首先显示。我已经尝试使用 ISNULL 和类似的 SQL 方法来代替使用的常规“asc”或“desc”,但我只收到错误。

这是我的 Group 模型中的代码:

class Group extends Eloquent {

public function employees()
{
return $this->belongsToMany("Employee")->orderBy('sortOrder', 'asc');
}
}

下面是我在 Controller 中用来访问我的模型的内容:

$board = Group::find(6)->employees;

Laravel 中最后排序 NULL 值的技巧是什么?

最佳答案

Laravel 不考虑 ISNULL 方法,但是,您可以将它作为原始查询传递并仍然使用它,因为它比 IF 语句更有效如果您超过 1000000 名员工(接受的答案),结果将保持不变,如下所示:

public function employees()
{
return $this->hasMany('Employee')
->orderBy(DB::raw('ISNULL(sortOrder), sortOrder'), 'ASC');
}

更新:您也可以使用 orderByRaw()方法:

public function employees()
{
return $this->hasMany('Employee')
->orderByRaw('ISNULL(sortOrder), sortOrder ASC');
}

关于php - 如何在 Laravel 中使用 Eloquent 对 NULL 值进行最后排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17644072/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com