时间:2021-05-25
本文实例讲述了ZendFramework2连接数据库操作。分享给大家供大家参考,具体如下:
相对于zf1,来说,zf2让我们对于数据库这方面的操作我的个人感觉是对于字段起别名简单了,但是对数据库的操作虽然配置写好的就基本不需要动了,但是还是比1的配置要繁琐,
还是那句话,大家可以去看看源码。。。
Module.php 里面添加
public function getServiceConfig(){ return array( 'factories' => array( 'Student\Model\StudentTable' => function($sm) { $tableGateway = $sm->get('StudentTableGateway'); $table = new StudentTable($tableGateway); return $table; }, 'StudentTableGateway' => function ($sm) { $dbAdapter = $sm->get('Zend\Db\Adapter\Adapter'); $resultSetPrototype = new ResultSet(); $resultSetPrototype->setArrayObjectPrototype(new Student()); return new TableGateway('cc_user', $dbAdapter, null, $resultSetPrototype);//table Name is cc_user }, ), );}student.php 这个是Model/Student.php
namespace Student\Model;class Student{ public $id; public $name; public $phone; public $mark; public $email; public function exchangeArray($data)//别名 { $this->id = (!empty($data['cc_u_id'])) ? $data['cc_u_id'] : null; $this->name = (!empty($data['cc_u_name'])) ? $data['cc_u_name'] : null; $this->phone = (!empty($data['cc_u_phone'])) ? $data['cc_u_phone'] : null; $this->mark = (!empty($data['cc_u_mark'])) ? $data['cc_u_mark'] : null; $this->email = (!empty($data['cc_u_email'])) ? $data['cc_u_email'] : null; }}StudentTable.php Model/StudentTable.php
<?phpnamespace Student\Model;use Zend\Db\ResultSet\ResultSet;use Zend\Db\TableGateway\TableGateway;use Zend\Db\Sql\Select;use Zend\Paginator\Adapter\DbSelect;use Zend\Paginator\Paginator;class StudentTable{ protected $tableGateway; protected $table='cc_user'; public function __construct(TableGateway $tableGateway) { $this->tableGateway = $tableGateway; } public function fetchAll($paginated) {//分页 if($paginated) { // create a new Select object for the table album $select = new Select('cc_user'); // create a new result set based on the Student entity $resultSetPrototype = new ResultSet(); $resultSetPrototype->setArrayObjectPrototype(new Student()); // create a new pagination adapter object $paginatorAdapter = new DbSelect( // our configured select object $select, // the adapter to run it against $this->tableGateway->getAdapter(), // the result set to hydrate $resultSetPrototype ); $paginator = new Paginator($paginatorAdapter); return $paginator; } $resultSet = $this->tableGateway->select(); return $resultSet; } public function getStudent($id) { $id = (int) $id; $rowset = $this->tableGateway->select(array('id' => $id)); $row = $rowset->current(); if (!$row) { throw new \Exception("Could not find row $id"); } return $row; } public function deleteStudent($id) { $this->tableGateway->delete(array('id' => $id)); } public function getLIValue(){ return $this->tableGateway->getLastInsertValue(); }}Student/IndexController.php 调用数据库
public function indexAction(){ $page=$this->params('page');//走分页 在model.config.php里面设置: $paginator = $this->getStudentTable()->fetchAll(true); // set the current page to what has been passed in query string, or to 1 if none set $paginator->setCurrentPageNumber((int)$this->params()->fromQuery('page', $page)); // set the number of items per page to 10 $paginator->setItemCountPerPage(10); return new ViewModel(array( 'paginator' => $paginator //模板页面调用的时候的名字 )); //print_r($this->getStudentTable()->fetchAll());}在模板页面的调用
<?php foreach ($this->paginator as $student) : ?><tr id="<?php echo $this->escapeHtml($student->id);?>"> <td><?php echo $this->escapeHtml($student->id);?></td> <td><?php echo $this->escapeHtml($student->name);?></td> <td><?php echo $this->escapeHtml($student->phone);?></td> <td><?php echo $this->escapeHtml($student->email);?></td>//应用了在Student.php的别名 <td><?php echo $this->escapeHtml($student->mark);?></td> <td><a href='#' class='icol-bandaid editUserInfo'></a> <a href='#' class='icol-key changePwd'></a> <a herf='#' class='icol-cross deleteStud'></a> </td> </tr><?php endforeach;?>更多关于zend相关内容感兴趣的读者可查看本站专题:《Zend FrameWork框架入门教程》、《php优秀开发框架总结》、《Yii框架入门及常用技巧总结》、《ThinkPHP入门教程》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家基于Zend Framework框架的PHP程序设计有所帮助。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
请看下面的操作图解。1.使用SqlServerManagementStudio2008连接数据库。2.选中要导出数据的数据库节点,点鼠标右键,在菜单中选择“任务
安装ORACLE数据库软件,dbca安装数据库后,需要配置listener连接数据库。这里有一些概念比较难理解,记录一些分析实战结论。从连接端讲起。1连接数据库
大多数PHP页面实际上都是数据库驱动的,要连接数据库才能显示出来,而响应时间过长的原因便在于PHP5.3连接数据库的方式有所改变。目前我们配置数据库信息时都类似
本文实例讲述了phppdo连接数据库操作。分享给大家供大家参考,具体如下:pdo连接数据库的有点是能实现不同数据库之间的转换,而且有事务功能的回滚,更有pdo:
最近在使用NFineBase框架+c#做一个系统的时候,在使用sqlserver2012连接数据库的时候,遇到几个问题。一.就是在本地或者远程连接别人的数据库的