一对多关系的排序问题

  • 年龄段表 age(id,age)

  • 用户表 user(id ,age_id)

  • 问题是:
    如何查询出按年龄倒序的用户列表?
    原生sql当然可以,其他方式呢?

JellyBool
$user->ages()->orderBy('age','desc')->get();

差不多这样

UpGod 回复 JellyBool

user 只对应一个age 吧?哪来的ages啊,查的是$users吧。 是一个年龄段对应多个用户的,然后按年龄排序用户,得出用户列表。这个好难啊 jelly,百度了好久只找到了一个原生的

JellyBool 回复 UpGod

啊哈。看错需求了:

$ageIds = Age::orderBy('age','desc')->pluck('id');
$users = User::whereIn('id',$ageIds)->get();

这样呢?

UpGod 回复 JellyBool

mysql 的in方法会按索引自动排序的 不会按ageIds 排序的,因为我后面还要做更新操作,所以没用集合

JellyBool 回复 UpGod

那感觉是只能使用 with(‘user’) 曲线救国了