文档章节

zf2 SQL where子句拼装

aidear
 aidear
发布于 2014/01/02 15:46
字数 482
阅读 103
收藏 2
点赞 0
评论 0

zf2中where,可以灵活的组织sql条件语句,达到想要的结果。以下举例说明:

1 //在TableGateway子类中:
2 $select = $this->getSql()->select();
3 $where = $select->where;
4 $data['k'] = '关键词';
5 $where->like('UserName', '%' . $data['k'] . '%')->orPredicate(new Like('Email', '%' .$data['k'] . '%'))
6             ->orPredicate(new Like('Nick', '%' . $data['k'] . '%'))
7             ->orPredicate(new Like('Mobile', '%' . $data['k'] . '%'))
8             ->orPredicate(new Like('Address', '%' . $data['k'] . '%'));
9 $select->where($where);
10 $select->order(array('LastUpdate' => 'DESC'));


打印出来的sql:

1 SELECT member.* FROM member WHERE UserName LIKE '%关键词%' OR Email LIKE '%关键词%'OR Nick LIKE '%关键词%' OR Mobile LIKE '%关键词%' OR Address LIKE '%关键词%' ORDER BYLastUpdate DESC;

范围条件:

1 $where->greaterThan('Points', 10);
2 $where->or;//默认并的关系,此处声明为或的关系
3 $where->lessThanOrEqualTo('Points', 5);

SQL:

1 SELECT `member`.* FROM `member` WHERE `Points` > '10' OR `Points` <= '5';

另一种写法:

1 $where->greaterThan('Points', 10);
2 $where->orPredicate(new Zend\Db\Sql\Predicate\OperatorOperator('Points', '<=', 5));

SQL:

1 SELECT `member`.* FROM `member` WHERE `Points` > '10' OR `Points` <= '5';

where闭包:

1 $select->where(function($where){
2     $where->lessThan('id', 10);
3     $where->greaterThan('id', 5);
4     return $where;
5 })->order('id DESC')->limit(10);

SQL:

1 SELECT `member`.* FROM `member` WHERE `id` < '10' AND `id` > '5' ORDER BY `id` DESCLIMIT 10;

更复杂一点的,可以增加条件语句括号:

1 $select->where(function($where){
2  
3     $subWherePoints = clone $where;
4     $subWhereGender = clone $where;
5  
6     $subWherePoints ->lessThan('Points', 10);
7     $subWherePoints ->or;
8     $subWherePoints ->greaterThan('Points', 50);
9  
10     $where->addPredicate($subWherePoints );
11  
12     $subWhereGender ->equalTo('Gender', 1);
13     $subWhereGender ->or;
14     $subWhereGender ->equalTo('Gender', 2);
15     $where->addPredicate($subWhereGender);
16  
17     return $where;
18 });

SQL:

1 SELECT `member`.* FROM `member` WHERE (`Points` < '10' OR `Points` > '50') AND(`Gender` = '1' OR `Gender` = '2');

可以看到针对Points和Gender字段的筛选分别加上了括号,可以理解为针对两个字段的WHERE对象($subWherePoints, $subWhereGender)的拼接,此处如果使用一个where对象拼接,就没有这个效果了,除非使用string.

包含SQL函数的表达式:

1 $select->where(array(
2     'create_time' => new Zend\Db\Sql\Expression('NOW()')
3 ));

SQL:

1 SELECT `member`.* FROM `member` WHERE `create_time` = NOW();

本文转载自:http://1208.me/zf2-study-note-sql-where-use/

共有 人打赏支持
aidear
粉丝 0
博文 1
码字总数 0
作品 0
浦东
程序员
Android 内容提供器---内容提供器基础(从提供器中获取数据)

这一节使用用户字典提供器作为一个例子来描述了怎样从提供器中获取数据。 为了清晰起见,本节中的代码片段在UI线程上调用ContentResolver()方法,但是,在实际代码中,应该在一个独立的线程中...

长平狐 ⋅ 2012/10/16 ⋅ 0

Zend Framework 2.0 (zf2) 进阶数据库操作

首选的操作DB方式还是继承TableGateway,比如现在要操作的数据库为test,数据表为mydbtable,新建一个类如下 class MyDbTable extends ZendDbTableGatewayTableGateway { } 连接数据库驱动推...

块块 ⋅ 2013/04/02 ⋅ 1

YMP v2.0.3 发布,轻量级 Java 应用开发框架

YMP v2.0.3 发布了。本次版本主要是优化更新,新版本已提交至Maven中央库,可以通过以下配置获取各模块依赖: net.ymate.platform ymate-platform- 2.0.3 请将替换为具体模块名,模块详见: T...

有理想的鱼 ⋅ 2017/11/03 ⋅ 1

Zend Framework 2.0 正式版发布及新功能介绍

著名php开源框架Zend Framework经历了长达数年的开发,终于在2012年9月5日正式发布了2.0版本,下简称ZF2。时隔Zend 1.0版本的发布已经有5年之久。php的框架一直都是百家争鸣的,但是作为php...

今天星期一 ⋅ 2012/09/07 ⋅ 24

菜菜鸟Zend Framework 2 不完全学习涂鸦(一)-- 安装配置

声明:本人 PHPer 菜鸟一枚,Zend Framework 2 框架的菜菜鸟,刚学习 ZF2 不过 2 天。由于英语实在太破,所以一开始只能找网上 ZF2 中文教程,但很多教程都只说到 ZF2 安装与配置就结束了,没...

Jacky.Wang ⋅ 2013/07/18 ⋅ 27

Zend Framework2 入门教程

由于篇幅过长使用过QQ空间的自动清理功能,不知道是否被删减有内容。 zend framework2 入门教程源码 http://pan.baidu.com/s/1kTuRGn9 目录 序言 5 第 1章 Zend Framework2 简介 6 1.1 Zend...

lai1362000 ⋅ 2014/02/19 ⋅ 8

菜菜鸟Zend Framework 2 不完全学习涂鸦(二)-- 类库共享

上篇涂鸦介绍了 ZF2 的安装和配置。 这篇涂鸦介绍一下 ZF2 类库文件的共享 上篇涂鸦中介绍的”在线安装“和”手动安装“都是将 ZF2 的类库文件安装在”项目目录/vendor/“(在线安装)或者”...

Jacky.Wang ⋅ 2013/07/18 ⋅ 4

Zend Framework 2.0 (zf2) 进阶数据库操作

连接数据库 首选的操作DB方式还是继承TableGateway,比如现在要操作的数据库为test,数据表为mydbtable,新建一个类如下 class MyDbTable extends ZendDbTableGatewayTableGateway{} 连接数据...

一切_放空 ⋅ 2013/08/27 ⋅ 0

菜菜鸟Zend Framework 2 不完全学习涂鸦(十一)-- Zend 框架工具(ZFT...

Zend 框架工具(ZFTool) 一、概览 ZFTool(下载)是一个维护模块化 ZF2 应用程序的公用模块。它可以在命令行模式下运行也可以安装成 ZF2 模块或者 PHAR(下文有介绍)。这个工具可以让你: ...

Jacky.Wang ⋅ 2013/08/06 ⋅ 1

SQL Server distinct子句

在SQL Server(Transact-SQL)中DISTINCT子句用于从结果集中删除重复记录。 DISTINCT子句只能和SELECT语句一起使用。 语法 在SQL Server(Transact-SQL)中DISTINCT子句的语法是: SELECT D...

易百教程 ⋅ 2016/08/10 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Cube、Cuboid 和 Cube Segment

1.Cube (或Data Cube),即数据立方体,是一种常用于数据分析与索引的技术;它可以对原始数据建立多维度索引。通过 Cube 对数据进行分析,可以大大加快数据的查询效率 2.Cuboid 在 Kylin 中特...

无精疯 ⋅ 31分钟前 ⋅ 0

github太慢

1:用浏览器访问 IPAddress.com or http://tool.chinaz.com 使用 IP Lookup 工具获得github.com和github.global.ssl.fastly.net域名的ip地址 2:/etc/hosts文件中添加如下格式(IP最好自己查一...

whoisliang ⋅ 33分钟前 ⋅ 0

非阻塞同步之 CAS

为解决线程安全问题,互斥同步相当于以时间换空间。多线程情况下,只有一个线程可以访问同步代码。这种同步也叫阻塞同步(Blocking Synchronization). 这种同步属于一种悲观并发策略。认为只...

长安一梦 ⋅ 43分钟前 ⋅ 0

云计算的选择悖论如何对待?

人们都希望在工作和生活中有所选择。但心理学家的调查研究表明,在多种选项中进行选择并不一定会使人们更快乐,甚至不会产生更好的决策。心理学家Barry Schwartz称之为“选择悖论”。云计算为...

linux-tao ⋅ 46分钟前 ⋅ 0

我的第一篇个人博客

虽然这是个技术博客,但是,我总是想写一些自己的东西,所有就大胆的在这里写下了第一篇非技术博客。技术博客也很久没有更新,个人原因。 以后自己打算在这里写一些非技术博客,可能个人观点...

Mrs_CoCo ⋅ 47分钟前 ⋅ 0

Redis 注册为 Windows 服务

Redis 注册为 Windows 服务 redis 注册为 windows 服务相关命令 注册服务 redis-server.exe –service-install redis.windows.conf 删除服务 redis-server –service-uninstall 启动服务 re......

Os_yxguang ⋅ 47分钟前 ⋅ 0

世界那么大,语言那么多,为什么选择Micropython,它的优势在哪?

最近国内MicroPython风靡程序界,是什么原因导致它这么火呢?是因为他功能强大,遵循Mit协议开源么? 错!因为使用它真的是太舒服了!!! Micropython的由来,这得益于Damien George这位伟大...

bodasisiter ⋅ 50分钟前 ⋅ 0

docker 清理总结

杀死所有正在运行的容器 docker kill $(docker ps -a -q) 删除所有已经停止的容器(docker rm没有加-f参数,运行中的容器不会删掉) docker rm $(docker ps -a -q) 删除所有未打 dangling 标...

vvx1024 ⋅ 今天 ⋅ 0

关于学习

以前学车的时候,教练说了这样的一句话:如果一个人坐在车上一直学,一直学,反而不如大家轮流着学。因为一个人一直学,就没有给自己留空间来反思和改进。而轮流着学的时候大家下来之后思考上...

mskk ⋅ 今天 ⋅ 0

压缩工具之gzip-bzip2-xz

win下常见压缩工具:rar zip 7z linux下常见压缩工具:zip gz bz2 xz tar.gz tar.bz2 tar.xz gzip 不支持目录压缩 gzip 1.txt #压缩。执行后1.txt消失,生成1.txt.gz压缩文件 gzip -d 1.txt....

ZHENG-JY ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部