Laravel查询优化:优先展示featured为1的Property数据
解决方案
要实现优先展示featured值为1的Property数据,你只需在原有查询中新增按featured降序排序的规则,让值为1的条目排在前面,之后保留原有的按name升序排序逻辑即可。
以下是两种可行的实现方式:
方式一:使用多个orderBy方法
直接在查询链中添加orderBy('featured', 'desc'),它会先按featured字段排序,再执行原有的name排序:
$properties = Property::with('Category') ->where('status','Active') ->orderBy('featured', 'desc') // 优先展示featured=1的内容 ->orderBy('name','asc') ->get();
方式二:使用orderByRaw原生排序语句
如果更倾向于原生SQL的排序逻辑,可以用orderByRaw直接指定组合排序规则:
$properties = Property::with('Category') ->where('status','Active') ->orderByRaw('featured DESC, name ASC') // 合并排序规则 ->get();
说明
featured字段值为1的条目会因降序排序(DESC)被优先展示,值为0的条目排在后面- 同一featured分组内的条目,仍会按照原有的
name升序规则排列
内容的提问来源于stack exchange,提问作者user3653474
相关产品推荐
相关产品推荐

