简体   繁体   English

Laravel 前后7条记录,按字母顺序排列

[英]Laravel 7 previous and next records with alphabetical order

In my edit form, I want to add a button to save and edit the following user.在我的编辑表单中,我想添加一个按钮来保存和编辑以下用户。

I am trying that the "next" button takes me to the next record in alphabetical order.我正在尝试“下一个”按钮将我带到按字母顺序排列的下一条记录。

I have only managed to order by ID我只能通过 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();
}

You need to use the rank function of mysql and raw query您需要使用 mysql 的排名 function 和原始查询

For previous record对于以前的记录

\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;');

For next record下一个记录

\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;');

And you need to set the mysql.strict to false in config/database.php并且您需要在config/database.php中将 mysql.strict 设置为 false

Or或者

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM