Zend Framework 2,数据库操作通过 ZendDb
中的接口实现。数据库操作中的where筛选,具体就是通过 ZendDbSqlWhere
这个类实现。
where
这个类默认接受以下三种参数:
- 闭包函数;
- 筛选条件字符串;
- 数组
闭包函数会传入一个 Where
对象,然后可以通过Where其支持的各种方法构造where语句,暂且不表;筛选条件字符串就更不用说了,就是SQL语句中where里的东西;这里说说数组。
数组这种方式,根据每个数组元素下标不同,具体又分为两种:
-
下标为数字 (如果不设置下标PHP会自动用数字编号),如果键值本身是表达式,就构造,如果键值本身是ZendDbSqlPredicate下的某个类实例,则调用对应的实例构造表达式
-
下标不是数字: 这个时候会自动把下标当作是列名 如果键值符合一个表达式的定义,比如“a = 1”这种方式,就会自动构造为一个表达式。 如果键值只是一个简单的字符串值或者null,就会自动构造为“键名=值”这样的表达式
这里需要提醒注意的是,如果我们where之前通过join的方式链接了其他的表,那么在数组键名确定字段时,就要带上完整的表名或者表别名。
比如,表 test 下的 id 字段,就应该是 test.id
,而不要直接传递 id
进去,以免冲突