前提:已经搭建好了ZF2框架。
内容:一些基本的数据库操作。
本文只是提供一些案例,供ZF2的Sql操作入门之用
数据样式表:
用户表(user):
ID(id) | 用户名(username) |
1 | 蘑菇 |
2 | 土豆 |
3 | 地瓜 |
文章表(article):
ID(id) | 用户id(uid) | 标题(title) |
1 | 1 | Timor队长正在待命 |
2 | 2 | 土豆呼叫地瓜 |
3 | 3 | 地瓜收到请回答 |
3 | 1 | 德玛西亚 |
1.查询
所有查询基于Sql并且在下面类中进行
<?php namespace Application\Model; use Zend\Db\Sql\Sql; class SelectExample { private $adapter; private $sql; public function __construct(Adapter $adapter) { $this->adapter = $adapter; } private function getSql() { if (!$this->sql) $this->sql = new Sql($this->adapter); return $this->sql; } }
1.1基本Select查询。
public function getUserById( $id ) { $select = $this->getSql()->select(); $select->from('user') ->columns(array('id', 'username')) ->where(array('id' => $id)); $statement = $this->getSql()->prepareStatementForSqlObject($select); $results = $statement->execute(); }
(从此处开始值演示基本语法,详细方式见上图)
1.2基本Select查询(查询多个id的用户,例如查询ID为1和2的用户)
$select->from('user') ->columns(array('id', 'username')) ->where(array('id' => array(1, 2)));
或者
use use Zend\Db\Sql\Predicate; $select->from('user') ->columns(array('id','username')) ->where(new Predicate\In('id', array(1, 2)));
1.3按用户的id倒叙查询前两位用户
$select->from('user') ->colums(array('id','username')) ->order('id DESC') ->limit(2);
1.4查询用户名中包含“豆”和“瓜”的用户
use use Zend\Db\Sql\Predicate; $select->from('user') ->colums(array('id','username')) ->where(new Predicate\PredicateSet( array( new Predicate\Like('username','%'.豆.'%'); new Predicate\Like('username','%'.瓜.'%'); ), Predicate\PredicateSet::COMBINED_BY_OR ));
1.5联合查询(Join)
(查询ID为2的所有文章)
$select->from('user') ->colums(array('id', 'username')) ->where(array('user.id' => 2)) ->join( 'article', 'user.id=article.uid', array('uid','title'), $select::JOIN_INNER );
2.Insert(添加新用户)
$insert = this->getSql()->Insert(); $insert->into('user') ->columns(array('username')) ->values(array('溜溜'));
3.Update
$update = $this->getSql()->Update(); $update->table('user') ->set('user' => 'LiuLiu') ->where(array('username' => '溜溜'));
4.Delete
$select = $this->getSql()->Delete(); $delect->form('user') ->where('username' => 'LiuLiu');