您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關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
<?php namespace 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(){ /* return new ViewModel(array( 'students' => $this->getStudentTable()->fetchAll(), //不分頁 ));*/ $page=$this->params('page');//走分頁 在model.config.php里面設置: /* model.config.php 'defaults' => array( 'controller' => 'Student\Controller\Index', 'action' => 'index', 'page'=>'1', ), */ $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;?>
感謝各位的閱讀!關于“ZendFramework2如何連接數據庫”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。