本文实例讲述了Yii框架where查询用法。分享给大家供大家参考,具体如下:
1.简述
Yii的查询操作找使用where用的很多 总结下常用的哈希格式与操作符格式
2.操作符格式
适用于操作符的
[操作符, 操作数1, 操作数2, ...]
[ 'LIKE','nickname','%'.strtr($mix_kw,['%'=>'\%', '_'=>'\_', '\\'=>'\\\\']).'%', false ];
['between', 'id', 1, 10] 将会生成 id BETWEEN 1 AND 10。 如果你需要建立一个值在两列之间的查询条件(比如 11 BETWEEN min_id AND max_id), 你应该使用 BetweenColumnsCondition。 请参阅 条件-对象格式 一章以了解有关条件的对象定义的更多信息。
in:第一个操作数应为字段名称或者 DB 表达式。第二个操作符既可以是一个数组, 也可以是一个 Query 对象。它会转换成IN 条件语句。如果第二个操作数是一个 数组,那么它代表的是字段或 DB 表达式的取值范围。如果第二个操作数是 Query 对象,那么这个子查询的结果集将会作为第一个操作符的字段或者 DB 表达式的取值范围。 例如, ['in', 'id', [1, 2, 3]] 将生成 id IN (1, 2, 3)。 该方法将正确地为字段名加引号以及为取值范围转义。in 操作符还支持组合字段,此时, 操作数1应该是一个字段名数组,而操作数2应该是一个数组或者 Query 对象, 代表这些字段的取值范围。
第一个操作数应为一个字段名称或 DB 表达式,
第二个操作数可以使字符串或数组, 代表第一个操作数需要模糊查询的值。比如,['like', 'name','tester'] 会生成 name LIKE '%tester%'。如果范围值是一个数组,那么将会生成用 AND 串联起来的 多个 like 语句。例如,['like', 'name', ['test', 'sample']] 将会生成 name LIKE '%test%' AND name LIKE '%sample%'。
第三个可选的操作数来指定应该如何转义数值当中的特殊字符。 该操作数是一个从需要被转义的特殊字符到转义副本的数组映射。 如果没有提供这个操作数,将会使用默认的转义映射。如果需要禁用转义的功能, 只需要将参数设置为 false 或者传入一个空数组即可。需要注意的是, 当使用转义映射(又或者没有提供第三个操作数的时候),第二个操作数的值的前后 将会被加上百分号。
>,<= 或者其他包含两个操作数的合法 DB 操作符:第一个操作数必须为字段的名称, 而第二个操作数则应为一个值。例如,['>', 'age', 10] 将会生成 age>10。
3.哈希格式
适用于简单的查询的
它是以数组的形式来书写的,数组的键表示字段的名称,而数组的值则表示 这个字段需要匹配的值。例如:
// ...WHERE (`status` = 10) AND (`type` IS NULL) AND (`id` IN (4, 8, 15)) $query->where([ 'status' => 10, 'type' => null, 'id' => [4, 8, 15], ]);
4.附加条件
你可以使用 andWhere() 或者 orWhere() 在原有条件的基础上 附加额外的条件
5.过滤条件
当 WHERE 条件来自于用户的输入时,你通常需要忽略用户输入的空值。 例如,在一个可以通过用户名或者邮箱搜索的表单当中,用户名或者邮箱 输入框没有输入任何东西,这种情况下你想要忽略掉对应的搜索条件, 那么你就可以使用 filterWhere() 方法来实现这个目的:
// $username 和 $email 来自于用户的输入 $query->filterWhere([ 'username' => $username, 'email' => $email, ]);
filterWhere() 和 where() 唯一的不同就在于,前者 将忽略在条件当中的hash format的空值。所以如果$email 为空而 $username 不为空,那么上面的代码最终将生产如下 SQL ...WHERE username=:username。
提示: 当一个值为 null、空数组、空字符串或者一个只包含空格的字符串时,那么它将被判定为空值。
更多关于Yii相关内容感兴趣的读者可查看本站专题:《Yii框架入门及常用技巧总结》、《php优秀开发框架总结》、《smarty模板入门基础教程》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。
本文向大家介绍Yii框架应用组件用法实例分析,包括了Yii框架应用组件用法实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Yii框架应用组件用法。分享给大家供大家参考,具体如下: 应用组件 ¶ 应用主体是服务定位器, 它部署一组提供各种不同功能的 应用组件 来处理请求。 例如,urlManager组件负责处理网页请求路由到对应的控制器。 db组件提供数据库相关服务等等。 在同一个应
本文向大家介绍Yii框架中memcache用法实例,包括了Yii框架中memcache用法实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Yii框架中memcache用法。分享给大家供大家参考。具体分析如下: 在现在的公司用的是YII的框架,接触到的东西也比较多,可以学到的东西也比较多,在以前的公司没有接触过memcache,只是听过,但是从来没有真正用过。现在终于有机会使用一下了,就
本文向大家介绍Yii的CDbCriteria查询条件用法实例,包括了Yii的CDbCriteria查询条件用法实例的使用技巧和注意事项,需要的朋友参考一下 本文实例总结了一些Yii的CDbCriteria查询条件用法,分享给大家供大家参考。具体分析如下: 这里就是Yii中使用CDbCriteria方法来进行查询的各种条件: 希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。
本文向大家介绍Yii框架分页实现方法详解,包括了Yii框架分页实现方法详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Yii框架分页实现方法。分享给大家供大家参考,具体如下: 下家公司用的框架是yii,这几天看了下相关教程,今儿把分页教程写下,最后把tp的分页也给整合进了yii,因为个人觉得yii分页没有tp用的顺手。 首页,在models目录里创建个Auth.php的模型文件,里面写
本文向大家介绍Yii框架小部件(Widgets)用法实例详解,包括了Yii框架小部件(Widgets)用法实例详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Yii框架小部件(Widgets)用法。分享给大家供大家参考,具体如下: 小部件 ¶ 小部件是在 视图 中使用的可重用单元, 使用面向对象方式创建复杂和可配置用户界面单元。 例如,日期选择器小部件可生成一个精致的允许用户选择日期的
本文向大家介绍thinkPHP5框架实现分页查询功能的方法示例,包括了thinkPHP5框架实现分页查询功能的方法示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了thinkPHP5框架实现分页查询功能的方法。分享给大家供大家参考,具体如下: controller文件内Admin.php model文件内Admin.php lst.html 更多关于thinkPHP相关内容感兴趣的读者可