laravel数据库中默认排序为desc的方法?

在 Laravel 中,默认情况下数据库查询没有预设的排序顺序,你需要显式地在查询中使用 orderBy 方法来指定排序方式。如果你想让某个模型的所有查询默认按照某个字段降序(desc)排序,可以通过重写模型的 newQuery 方法或者在查询时默认添加 orderBy 条件来实现。

方法 1:重写 newQuery 方法

在你的模型文件中,你可以重写 newQuery 方法来添加默认的排序条件。例如,如果你想要默认按照 created_at 降序排序,可以在模型类中这样做:

use Illuminate\Database\Eloquent\Builder;

class YourModel extends Model
{
    public static function newQuery($excludeDeleted = true)
    {
        $query = parent::newQuery($excludeDeleted);
        $query->orderBy('created_at', 'desc');

        return $query;
    }
}

方法 2:在查询时使用全局作用域

你还可以定义一个全局作用域来实现默认排序,这给了你更多的灵活性来控制何时应用这个默认排序。

方法 3:直接在查询链中使用

如果你只是想在某一次特定的查询中默认使用 desc 排序,可以直接在查询链中加入 orderBy 方法:

$items = YourModel::orderBy('created_at', 'desc')->get();

注意

根据你的需求,选择合适的方法来实现默认排序。重写 newQuery 方法会全局影响该模型的所有查询,而全局作用域和直接在查询链中使用 orderBy 提供了更细粒度的控制。确保所选择的排序字段和排序方式符合你的业务逻辑需求。

Was this helpful?

0 / 0

发表回复 0