ZendFramework2连接数据库操作实例

时间: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>&nbsp;&nbsp; <a href='#' class='icol-key changePwd'></a>&nbsp;&nbsp; <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邮箱联系删除。

相关文章