Laravel 如何按范围内的关系排序?
我在用户模型中有以下范围
$query->with('country')
->when($filters['search'] ?? null, function ($query, $search) {
return $query->where('name', 'LIKE', '%' . $search . '%')
->orWhereHas('country', function ($query) use ($search) {
$query->where('name', 'LIKE', '%' . $search . '%');
});
});
$query->orderBy('name', 'asc');
}
return $query;
}
我对 Laravel 很陌生 - 我目前上面的查询按用户名排序,但我想按国家/地区名称排序。我可以使用 country_id 执行此操作,因为存在关系,但不确定如何按国家/地区名称排序。
谢谢
I have the following scope in User model
$query->with('country')
->when($filters['search'] ?? null, function ($query, $search) {
return $query->where('name', 'LIKE', '%' . $search . '%')
->orWhereHas('country', function ($query) use ($search) {
$query->where('name', 'LIKE', '%' . $search . '%');
});
});
$query->orderBy('name', 'asc');
}
return $query;
}
I am pretty new to Laravel - I currently the above query is sorting by user name but I would like to sort by country name. I can do this with country_id as there is a relation but not sure how to sort by country name.
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我们可以使用两种方法按公司对这些用户进行排序。第一种是使用联接:
这是为此查询生成的 SQL:
第二种方法是使用子查询:
您可以在此处查看参考:按 laravel 中的关系列对数据库查询进行排序
there are two approaches we can use to order these users by their company. The first is using a join:
Here is the generated SQL for this query:
The second way is using a subquery:
And you can see the reference here: ordering database queries by relationship columns in laravel