tp5+exp通用查询

exp是英文单词:expression(表达式的缩写)

1、exp设置的条件,出现在SQL语句条件表达式中

2、以下是普通查询条件与exp查询条件之间的转换:

转换方法:中间参数改为:’exp’,第三个参数必须是字符串,是原来中间参数与第三参数的合体

1、相等

//1、相等
$result = Db::table('tp5_staff') -> where('id','=',1010) -> select();   // 原条件
$result = Db::table('tp5_staff') ->where('id','exp','=1010')->select();  //转换后

2、不相等

//2、不相等
$result = Db::table('tp5_staff') -> where('id','<>',1010)->select();   // 原条件
$result = Db::table('tp5_staff') -> where('id','exp','<>1010')->select();  //转换后

3、大于

//3、大于
$result = Db::table('tp5_staff')  -> where('id','>',1010) -> select();   // 原条件
$result = Db::table('tp5_staff')  -> where('id','exp','>1010') -> select();  //转换后

4、大于等于

//4、大于等于
$result = Db::table('tp5_staff') -> where('id','>=',1010) -> select();   // 原条件
$result = Db::table('tp5_staff') -> where('id','exp','>=1010') -> select();  //转换后

5、小于

//5、小于
$result = Db::table('tp5_staff') -> where('id','<',1010) -> select();   // 原条件
$result = Db::table('tp5_staff') -> where('id','exp','<1010') -> select();  //转换后

6、大于等于

//6、大于等于
$result = Db::table('tp5_staff') -> where('id','<=',1010) -> select();   // 原条件
$result = Db::table('tp5_staff') -> where('id','exp','<=1010') -> select();  //转换后

7、模糊查询, like 后字符串必须加引号,并且要与外层区分开

//7、模糊查询, like 后字符串必须加引号,并且要与外层区分开
$result = Db::table('tp5_staff') -> where('name','like','%张%') -> select();   // 原条件
$result = Db::table('tp5_staff') -> where('name','exp','like "%张%"') -> select();  //转换后

8、区间查询,第三参数就是出现在SQL条件中的字符串

//8、区间查询,第三参数就是出现在SQL条件中的字符串
$result = Db::table('tp5_staff') -> where('id','between',[1010,1020]) -> select();   // 原条件
$result = Db::table('tp5_staff') -> where('id','exp','between 1010 and 1020') -> select();  //转换后

9、集合查询,第三参数就是出现在SQL条件中的字符串

//9、集合查询,第三参数就是出现在SQL条件中的字符串
$result = Db::table('tp5_staff') -> where('id','in',[1005,1008,1020]) -> select();   // 原条件
$result = Db::table('tp5_staff')-> where('id','exp','in (1005,1008,1020)') -> select();  //转换后

10、空值查询,第三参数就是出现在SQL条件中的字符串

//10、空值查询,第三参数就是出现在SQL条件中的字符串
$result = Db::table('tp5_staff')->where('sex','not null')->select();   // 原条件
$result = Db::table('tp5_staff')->where('sex','exp','is not null')->select();  //转换后

11、不指定字段,使用函数拼接任意查询条件(tp5如何查询 以逗号间隔的数据)

$option[]= ['exp',Db::raw("FIND_IN_SET($id,hids)")];
$tags=Db::name('hospital_tags')->where($option)->select();

这里使用了FIND_IN_SET函数,目的是为了查询出hids字段中包含某个id的数据,hids字段中的值格式为 1,5,7

这种场景下的查询就特别好用

 

总结:

如果对原生SQL比较熟悉,用此方法,将所有查询条件归结到一种方式之下,便于记忆。

 

THE END