adapter
是数据库配置的抽象,主要是把数据库的各种配置信息抽象出来
$adapter = new Zend\Db\Adapter\Adapter($configArray);可以配置驱动,用户名,密码,端口,字符集
$adapter = new Zend\Db\Adapter\Adapter(array( 'driver' => 'Mysqli', 'database' => 'zend_db_example', 'username' => 'developer', 'password' => 'developer-password' ));
通过adapter也可以直接的操作数据库
$adapter->query('ALTER TABLE ADD INDEX(`foo_index`) ON (`foo_column`)', Adapter::QUERY_MODE_EXECUTE);官网上还有一些能够利用adapter来配置的参数$statement = $adapter->createStatement($sql, $optionalParameters); $result = $statement->execute();还有driver,platform,parameter Container ,这些才操作我还没有去深入的了解有了adapter就可以对数据库的数据进行操作tableGateway
就是对数据表操作的一个集合,可以利用封装的方法来更容易的操作数据表,要利用tableGateway前提是要有数据库的配置信息,所以要把adapter作为一个参数public function __construct($table, Adapter $adapter, $features = null, ResultSet $resultSetPrototype = null, Sql $sql = null)$projectTable = new TableGateway('project', $adapter);在adapter里封装的方法都是经常被用到的:public function isInitialized(); public function initialize(); public function getTable(); public function getAdapter(); public function getColumns(); public function getFeatureSet(); public function getResultSetPrototype(); public function getSql(); public function select($where = null); public function selectWith(Select $select); public function insert($set); public function insertWith(Insert $insert); public function update($set, $where = null); public function updateWith(Update $update); public function delete($where); public function deleteWith(Delete $delete); public function getLastInsertValue();
项目中经常是通过调用这些方法来完成逻辑,所以有必要去了解这些函数的作用
Sql
sql 是对SQL语句的抽象,可以通过SQL对象进行更加复杂的操作
用SQL操作也需要先得到数据库的认可,
$sql = new Sql($adapter);SQL的类里封装了所有的SQL关键字,可以充分的利用SQL来是实现各种不同的需求
一般情况下在加载框架的时候都会生成一个静态的adapter(这是只有一个数据库的情况下),在使用的时候就可以调用
Zend\Db\TableGateway\Feature\GlobalAdapterFeature::getStaticAdapter();
这些基本就有了框架操作数据库的各种原理了。