zend2数据层代码示例
来源:互联网 发布:pageoffice php 编辑:程序博客网 时间:2024/06/05 11:44
zend2数据层配置和代码示范(带一对多关系)表 admin, log,数据模型代码和工厂类,配置,控制器在模块Admin的调用示范
CREATE TABLE `admin` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自动编号', `username` varchar(64) NOT NULL COMMENT '用户名', `password` varchar(40) NOT NULL COMMENT '登陆密码', `disabled` tinyint(1) NOT NULL COMMENT '禁用状态', `name` varchar(64) NOT NULL COMMENT '姓名', `title` varchar(64) NOT NULL COMMENT '职位', `phone` varchar(64) NOT NULL COMMENT '联系电话', `email` varchar(320) NOT NULL COMMENT '邮件地址', `address` varchar(255) NOT NULL COMMENT '联系地址', `description` text NOT NULL COMMENT '其他记录', `addtime` bigint(20) NOT NULL COMMENT '增加时间', `uptime` bigint(20) NOT NULL COMMENT '更新时间', PRIMARY KEY (`id`), UNIQUE KEY `username_UNIQUE` (`username`)) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 COMMENT='管理员数据表';CREATE TABLE `adminlog` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自动编号', `admin` int(11) NOT NULL COMMENT '管理员', `content` text NOT NULL COMMENT '内容', `time` bigint(20) NOT NULL COMMENT '时间', PRIMARY KEY (`id`), KEY `fk_adminlog_admin_idx` (`admin`), CONSTRAINT `fk_adminlog_admin` FOREIGN KEY (`admin`) REFERENCES `admin` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE=InnoDB AUTO_INCREMENT=220 DEFAULT CHARSET=utf8 COMMENT='管理日志';
return array( 'service_manager' => array( 'factories' => array( 'Zend\Db\Adapter\Adapter' => 'Zend\Db\Adapter\AdapterServiceFactory', ), ),);
编辑 "/config/application.config.php" 注册数据库工厂服务return array( 'db' => array( 'driver' => 'pdo', 'platform' => 'Mysql', 'pdodriver' => 'mysql', 'options' => array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'utf8\'') ),);
编辑 "/config/autoload/global.php" 配置数据库参数return array( 'db' => array( 'hostname' => '服务器', 'dbname' => '数据库名', 'username' => '账号', 'password' => '密码', ),);
编辑 "/config/autoload/local.php" 配置数据库连接信息<?phpnamespace Admin;use Zend\Db\ResultSet\ResultSet;use Zend\Db\TableGateway\TableGateway;use Zend\ModuleManager\Feature\ServiceProviderInterface;class Module implements ServiceProviderInterface { public function getServiceConfig() { return array("factories" => array( 'Admin\Model\AdminTable' => function($serviceManager) { $resultset = new Model\Admin(); $resultset->setServiceLocator($serviceManager) $resultSetPrototype = new ResultSet(); $resultSetPrototype->setArrayObjectPrototype($resultset); return new Model\AdminTable(new TableGateway('admin', $serviceManager->get('Zend\Db\Adapter\Adapter'), null, $resultSetPrototype)); }, 'Admin\Model\LogTable' => function($serviceManager) { $resultset = new Model\Log(); $resultset->setServiceLocator($serviceManager) $resultSetPrototype = new ResultSet(); $resultSetPrototype->setArrayObjectPrototype($resultset); return new Model\LogTable(new TableGateway('adminlog', $serviceManager->get('Zend\Db\Adapter\Adapter'), null, $resultSetPrototype)); }, )); }}
编辑 "/module/Admin/Module.php" 将XXXTable作为服务注册. 并且注册时帮定数据实例(Model\XXX)类,$resultset->setServiceLocator($serviceManager) 是可选调用,用于给实例中的服务设置调用,如果数据行中用不上则可以不调用此行<?phpnamespace Admin\Model;use Zend\ServiceManager\ServiceLocatorAwareInterface;/** * entity of Admin * * @author ShiZhuolin */class Admin implements ServiceLocatorAwareInterface { /** * 服务 * @var \Zend\ServiceManager\ServiceLocatorInterface */ protected $servicelocator; /** * 自动编号 * @var int */ public $id; /** * 用户名 * @var string */ public $username; /** * 登陆密码 * @var string */ public $password; /** * 禁用状态 * @var bool */ public $disabled; /** * 姓名 * @var string */ public $name; /** * 职位 * @var string */ public $title; /** * 联系电话 * @var string */ public $phone; /** * 邮件 * @var string */ public $email; /** * 联系地址 * @var string */ public $address; /** * 描述 * @var string */ public $description; /** * 增加时间 * @var int */ public $addtime; /** * 更新时间 * @var int */ public $uptime; /** * 交换数组数据 * @param array $data * @return void */ public function exchangeArray($data) { $this->id = isset($data['id']) ? $data['id'] : null; $this->username = isset($data['username']) ? $data['username'] : null; $this->password = isset($data['password']) ? $data['password'] : null; $this->disabled = isset($data['disabled']) ? $data['disabled'] : null; $this->name = isset($data['name']) ? $data['name'] : null; $this->title = isset($data['title']) ? $data['title'] : null; $this->phone = isset($data['phone']) ? $data['phone'] : null; $this->email = isset($data['email']) ? $data['email'] : null; $this->address = isset($data['address']) ? $data['address'] : null; $this->description = isset($data['description']) ? $data['description'] : null; $this->addtime = isset($data['addtime']) ? $data['addtime'] : null; $this->uptime = isset($data['uptime']) ? $data['uptime'] : null; } /** * 输出数组 * @return array */ public function getArrayCopy() { return array( 'id' => $this->id, 'username' => $this->username, 'password' => $this->password, 'disabled' => $this->disabled, 'name' => $this->name, 'title' => $this->title, 'phone' => $this->phone, 'email' => $this->email, 'address' => $this->address, 'description' => $this->description, 'addtime' => $this->addtime, 'uptime' => $this->uptime, ); } /** * 记录日志 * @param string $message */ public function log($message) { $log = new \Admin\Model\Log; $log->admin = $this->id; $log->content = $message; $log->time = time(); $this->getServiceLocator()->get('Admin\Model\LogTable')->insert($log); } public function getServiceLocator() { return $this->servicelocator; } public function setServiceLocator(\Zend\ServiceManager\ServiceLocatorInterface $serviceLocator) { $this->servicelocator = $serviceLocator; }}
编辑 "\module\Admin\src\Admin\Model\Admin.php" 数据实体<?phpnamespace Admin\Model;use Zend\Db\ResultSet\ResultSet;use Zend\Db\TableGateway\TableGateway;/** * table of AdminTable * * @author ShiZhuolin */class AdminTable { /** * TableGateway * @var TableGateway */ protected $tableGateway; /** * construct * @param TableGateway $tableGateway */ public function __construct(TableGateway $tableGateway) { $this->tableGateway = $tableGateway; } /** * TableGateway * @return TableGateway */ public function getTableGateway() { return $this->tableGateway; } /** * fetch data * @param Where|\Closure|string|array $where * @return ResultSet|Admin */ public function fetch($where = null) { return $this->tableGateway->select($where); } /** * find by id * @param int $id * @return Admin */ public function find($id) { return $this->tableGateway->select(array('id' => (int) $id))->current(); } /** * insert data * @param Admin $admin * @return int */ public function insert(Admin $admin) { $data = $admin->getArrayCopy(); unset($data['id']); return $this->tableGateway->insert($data); } /** * update data * @param Admin $admin * @return int */ public function update(Admin $admin) { $data = $admin->getArrayCopy(); unset($data['id']); return $this->tableGateway->update($data, array('id' => (int) $admin->id)); } /** * delete by id * @param int $id * @return int */ public function delete($id) { return $this->tableGateway->delete(array('id' => (int) $id)); }}
编辑 "module\Admin\src\Admin\Model\AdminTable.php" 数据操作工厂.$this->getServiceLocator()->get('Admin\Model\AdminTable')
在控制器中调用 AdminTable实例. 通过Tables实例操作数据库表 0 0
- zend2数据层代码示例
- N层代码示例
- N层代码示例
- asp.netN层代码示例
- android 弹出层 示例代码
- 数据访问层小示例
- 数据访问层类示例
- 数据层代码.net
- ASP.NET学习--N层代码示例
- ASP.NET学习--N层代码示例
- asp.net-N层代码示例
- asp.net-N层代码示例
- ASP.NET--N层代码示例
- JS 弹出一个层示例代码
- 纯CSS弹出层的示例代码
- jquery 创建遮盖层 示例代码
- 弹出层-防抖动(示例代码)
- 一个ObjectDataSource 控件,该控件从名为 AuthorsDB 的数据访问层组件公开数据(代码示例)
- python程序的调试方法
- 多态与索引器
- 簡單SQL存儲過程實例
- 【cocos2dx】cocos2dx学习笔记
- linux内核中关于MACH_TYPE_OMAP_4430SDP的定义
- zend2数据层代码示例
- Language Basics:语言基础
- Classes and Objects :类和对象(1)
- Classes and Objects :类和对象(2)
- PHP实现RGB,HSL,HSV色彩空间转换
- Annotations:注解
- Trail: JDBC(TM) Database Access(1)
- Trail: JDBC(TM) Database Access(2)
- J2SE7规范_2013.2_类型_命名