Dieser Artikel stellt hauptsächlich die Funktionsweise von ZendFramework2 zum Herstellen einer Verbindung zur Datenbank vor. Er analysiert die spezifischen Schritte, Konfigurationsmethoden, zugehörigen Betriebsfähigkeiten und Vorsichtsmaßnahmen von ZendFramework2 zum Herstellen einer Verbindung zur Datenbank in Form eines vollständigen Beispiels siehe diesen Artikel
Das Beispiel beschreibt die Funktionsweise von ZendFramework2 zum Herstellen einer Verbindung zur Datenbank. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:
Im Vergleich zu zf1 ermöglicht uns zf2 den Betrieb der Datenbank. Mein persönlicher Eindruck ist, dass es einfacher ist, Felder zu aliasen, aber den Betrieb der Datenbank Obwohl die Konfiguration einmal geschrieben ist, besteht grundsätzlich keine Notwendigkeit, sie zu verschieben, sie ist jedoch immer noch umständlicher als die Konfiguration in 1.
Auch hier können Sie einen Blick auf den Quellcode werfen. . .
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 hinzufügen Das ist 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 ruft die Datenbank auf
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()); }
ruft die Vorlagenseite auf
<?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;?>
Das Obige ist der gesamte Inhalt dieses Artikels, der für das Lernen aller hilfreich sein wird Bitte achten Sie auf PHP Chinese Net!
Verwandte Empfehlungen:
Zend
Nutzungsanalyse der Bootstrap-Klasse im Framework
Analyse gängiger Datenbankoperationen, die vom Yii2-Framework implementiert werden
Über die Funktionsweise des Zend Framework implementiert Sitzungen werden im Memcache gespeichert
Das obige ist der detaillierte Inhalt vonInformationen zum Betrieb von ZendFramework2 zum Herstellen einer Verbindung zur Datenbank. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!