Laravel 7 上一条和下一条记录,按字母顺序排列

Laravel 7 previous and next records with alphabetical order

在我的编辑表单中,我想添加一个按钮来保存和编辑以下用户。

我正在尝试让“下一个”按钮按字母顺序转到下一个记录。

我只能通过ID订购

// In a model
public function next(){
  return User::where('id', '>', $this->id)->orderBy('nombre','asc')->first();
}
public  function previous(){
  return User::where('id', '<', $this->id)->orderBy('nombre','desc')->first();
}

您需要使用 mysql 的排名函数和原始查询

之前的记录

\DB::select('SELECT * FROM (SELECT RANK() OVER (ORDER BY nombre ASC) ranking, users.* FROM `users`) user where ranking < {previous_record_rank} ORDER BY ranking asc limit 1;');

下一条记录

\DB::select('SELECT * FROM (SELECT RANK() OVER (ORDER BY nombre ASC) ranking, users.* FROM `users`) user where ranking > {previous_record_rank} ORDER BY ranking asc limit 1;');

并且您需要在 config/database.php

中将 mysql.strict 设置为 false

或者

\DB::statement("SET SQL_MODE=''");