## 基础 名称:minmax 类型:非静态方法 必须:否 参数个数:3个 结构: minmax($field,$min,$max) 作用:用于生成区间筛选的sql条件,如价格区间筛选,时间区间筛选 调用方式:condition::field('a1')->and()->minmax('a2','100','200')->return(); ## 详情介绍 通过使用field(),or(),and()方法我们已经能完成大部分的条件筛选sql的生成了; 但是field方法有个缺点就是 数据库字段名与php变量必须要一一对应,虽然我们也可以使用field()第三个参数的方式达到可以不与数据库字段名一一对应的结果,但是如果筛选条件够多的话,那连接的表达式将变得非常长,不便于阅读理解。 尤其是价格区间和时间区间的筛选,在原生的destoon中我们都需要对时间和进行转换操作 ,如果使用field()的话,我们还得在php中先进行日期与时间的格式转换;这样就体现不出我们condition辅助的简捷精髓了。 所以minmax()方法诞生了,一个专业务区间筛选而存在的方法。 ## 参数详解 第一个,为必传参数,第二个,第三个非必传参数。 ### $field 数据库字段名 必传参数 必须与数据库中的字段对应 #### 类型支持 与field()方法中的$field参数一样,minmax()方法中的$field也是支持字段类型的哦,只不过与field()中的类型有些区别。 支持的类型: 时间戳:time 日期:date 数字或价格:float 示例: ``` condition::field('a1')->and()->minmax('addtime[time]','2019-05-18','2019-08-10')->return(); //结果 //a1='10' and addtime>=15489546255 and addtime<=15685656565 ``` 示例中的时间戳我是乱写的 提示: 当指定$field的类型的time时,min和max传入的时日期,则会自动转换为时间戳,当传入时间戳时则不会转换,不过一般日期都是由搜索页面get表单传过来的日期了。 addtime[time]指的是对应的数据库表中的字段addtime 然后存储的值类型是10位时间戳。 如果查询adddate字段时请使用 ``` condition::field('a1')->and()->minmax('adddate[date]','2019-05-18','2019-08-10')->return(); //结果 //a1='10' and adddate>=201-05-18 and addtime<=2019-08-10 ``` 当指定$field的类型为date时,如果min和max的值传入时间戳则会自动转换日期。 ###$min 最小值 非必传参数 ###max 最大值 非必传参数 ## 使用案例 ``` //三个参数都有时 condition::field('a1')->and()->minmax('price',100,500)->return(); //结果 //a1='10' and price>=100 and price<=500 //不传max时 condition::field('a1')->and()->minmax('price',100)->return(); //结果 //a1='10' and price>=100 //不传min时 condition::field('a1')->and()->minmax('price','',500)->return(); //结果 //a1='10' and price<=500 //min 和max都不传时 condition::field('a1')->and()->minmax('price')->return(); //结果 啥都没有哦 ``` ## 小结提醒 $min 和 $max 两个参数要二选一哦,两个都不传,minmax()方法就没作用了。 # 打赏 您的支持是我最大的动力哦,立即通过微信扫一扫犒劳下高飞吧! ![](images/weixin.jpg)