Maison >développement back-end >tutoriel php >A propos du fonctionnement de ZendFramework2 pour se connecter à la base de données
Cet article présente principalement le fonctionnement de ZendFramework2 pour se connecter à la base de données. Il analyse les étapes spécifiques, les méthodes de configuration, les compétences opérationnelles associées et les précautions de ZendFramework2 pour se connecter à la base de données sous la forme d'un exemple complet. reportez-vous à cet article
L'exemple décrit le fonctionnement de ZendFramework2 pour se connecter à la base de données. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :
Par rapport à zf1, zf2 nous permet de faire fonctionner la base de données. Mon sentiment personnel est qu'il est plus facile d'aliaser les champs, mais le fonctionnement de la base de données. bien qu'une fois la configuration écrite, il n'est fondamentalement pas nécessaire de la déplacer, mais elle est quand même plus lourde que la configuration en 1.
Encore une fois, vous pouvez jeter un œil au code source. . .
Module.php Ajouter
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 Ceci est 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 appelle la base de données
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()); }
Appel sur la page modèle
<?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;?>
Ce qui précède est l'intégralité du contenu de cet article, j'espère que ce sera le cas être utile à l'apprentissage de chacun Aide, veuillez faire attention au site Web PHP chinois pour plus de contenu connexe !
Recommandations associées :
Zend
Analyse de l'utilisation de la classe Bootstrap dans Framework
Analyse des opérations de base de données courantes implémentées par le framework Yii2
À propos du fonctionnement de Zend Framework implémente Les sessions sont stockées dans memcache
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!