有没有办法在laravel(8)中orderBy或OrderBy?
Is there a way to orderBy orOrderBy in laravel (8)?
我在 laravel 模型上有一个作用域方法:
public function scopeSort($query, array $params = []) {
return $query->orderBy('read');
}
我想做的是说:如果没有 read = true 的项目,则 orderByDesc on id。
例如:
public function scopeSort($query, array $params = []) {
return $query->orderBy('read')->orOrderByDesc('id');
// Find all with a read of true or, if there is none, order the collection by id in descending order.
}
有这样的东西吗?或者有其他方法可以实现吗?
你可以链接你的排序:
public function scopeSort($query, array $params = []) {
return $query->orderBy('read')->orderBy('id','desc');
}
示例:
ID read
1 0
4 0
3 0
你会得到:
ID read
4 0
3 0
1 0
示例:
ID read
1 0
4 1
3 1
5 0
6 1
你会得到:
ID read
5 0
1 0
6 1
4 1
3 1
在all read = 0的情况下,查询会按照ID desc排序。
在有一些read = 1的情况下,查询会先按read排序,再按ID排序。
编辑:准确地说,查询将始终按 'read' 然后 'ID' 排序,但我想你会得到你想要的
我在 laravel 模型上有一个作用域方法:
public function scopeSort($query, array $params = []) {
return $query->orderBy('read');
}
我想做的是说:如果没有 read = true 的项目,则 orderByDesc on id。
例如:
public function scopeSort($query, array $params = []) {
return $query->orderBy('read')->orOrderByDesc('id');
// Find all with a read of true or, if there is none, order the collection by id in descending order.
}
有这样的东西吗?或者有其他方法可以实现吗?
你可以链接你的排序:
public function scopeSort($query, array $params = []) {
return $query->orderBy('read')->orderBy('id','desc');
}
示例:
ID read
1 0
4 0
3 0
你会得到:
ID read
4 0
3 0
1 0
示例:
ID read
1 0
4 1
3 1
5 0
6 1
你会得到:
ID read
5 0
1 0
6 1
4 1
3 1
在all read = 0的情况下,查询会按照ID desc排序。 在有一些read = 1的情况下,查询会先按read排序,再按ID排序。
编辑:准确地说,查询将始终按 'read' 然后 'ID' 排序,但我想你会得到你想要的