laravel中orm的条件筛选和排序

  1. 常规操作
    筛选a字段大于10,b字段等于10的记录并按照a降序,代码如下:
	$query->where('a','>',10)->where('b','=','10')->orderBy('a','desc')->get();
	常规操作就没啥好解释的了
  1. 非常规操作筛选
    筛选a字段小于b字段的所有记录并按照a降序,
    分析:排序常规操作没啥好说的,主要是筛选,要是直接写sql,那就不能利用orm了,这不是我想要的,直接用常规操作代码报错,这个时候就需要用到whereRaw()这个方法了,具体使用请自行查阅文档,使用之后就可以在orm中嵌入sql语句,然后完美解决这个问题,代码如下:
	$query->whereRaw('a < b')->orderBy('a','desc')->get();
	结果:完全符合需求
  1. 非常规操作排序
    筛选a字段小于b字段的所有记录并按照(a/b)升序
    分析:这个筛选就像上边那样,关键在于排序,直接使用orderBy('a')->orderBy('b'),结果不符合需求,使用orderBy('a/b')代码报错,那该怎么办呢?还是类似于2的处理,使用
    orderByRaw() ,该方法可用于设置原生字符串作为 order by 子句的值,代码如下:
	$query->whereRaw('a < b')->orderByRaw('a/b ASC')->get();
	结果:完全符合需求

总结:遇到没见过的问题,自己先尝试处理,能解决自然是最好的,解决不了只能去查看文档或者求助度娘了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值