zoukankan      html  css  js  c++  java
  • zendframework 2 链接数据库

    相对于zf1,来说,zf2让我们对于数据库这方面的操作我的个人感觉是对于字段起别名简单了,但是对数据库的操作虽然配置写好的就基本不需要动了,但是还是比1的配置要繁琐,

    还是那句话,大家可以去看看源码。。。

     1  Module.php 里面添加

    public function getServiceConfig() 2 { 3 return array( 4 'factories' => array( 5 'StudentModelStudentTable' => function($sm) { 6 $tableGateway = $sm->get('StudentTableGateway'); 7 $table = new StudentTable($tableGateway); 8 return $table; 9 }, 10 'StudentTableGateway' => function ($sm) { 11 $dbAdapter = $sm->get('ZendDbAdapterAdapter'); 12 $resultSetPrototype = new ResultSet(); 13 $resultSetPrototype->setArrayObjectPrototype(new Student()); 14 return new TableGateway('cc_user', $dbAdapter, null, $resultSetPrototype);//table Name is cc_user 15 }, 16 ), 17 ); 18 }
     1 namespace StudentModel;
     2 
     3 class Student
     4 {
     5     public $id;
     6     public $name;
     7     public $phone;
     8     public $mark;
     9     public $email;
    10 
    11     public function exchangeArray($data)//别名
    12     {
    13         $this->id     = (!empty($data['cc_u_id'])) ? $data['cc_u_id'] : null;
    14         $this->name = (!empty($data['cc_u_name'])) ? $data['cc_u_name'] : null;
    15         $this->phone  = (!empty($data['cc_u_phone'])) ? $data['cc_u_phone'] : null;
    16         $this->mark  = (!empty($data['cc_u_mark'])) ? $data['cc_u_mark'] : null;
    17         $this->email  = (!empty($data['cc_u_email'])) ? $data['cc_u_email'] : null;
    18     }
    19 }
    student.php 这个是Model/Student.php
    
    
     1 <?php
     2 namespace StudentModel;
     3 
     4 use ZendDbResultSetResultSet;
     5 use ZendDbTableGatewayTableGateway;
     6 use ZendDbSqlSelect;
     7 use ZendPaginatorAdapterDbSelect;
     8 use ZendPaginatorPaginator;
     9 
    10 class StudentTable
    11 {
    12     protected $tableGateway;
    13     protected $table='cc_user';
    14 
    15     public function __construct(TableGateway $tableGateway)
    16     {
    17         $this->tableGateway = $tableGateway;
    18     }
    19 
    20     public function fetchAll($paginated)
    21     {//分页
    22          if($paginated) {
    23             // create a new Select object for the table album
    24             $select = new Select('cc_user');
    25             // create a new result set based on the Student entity
    26             $resultSetPrototype = new ResultSet();
    27             $resultSetPrototype->setArrayObjectPrototype(new Student());
    28             // create a new pagination adapter object
    29             $paginatorAdapter = new DbSelect(
    30                 // our configured select object
    31                 $select,
    32                 // the adapter to run it against
    33                 $this->tableGateway->getAdapter(),
    34                 // the result set to hydrate
    35                 $resultSetPrototype
    36             );
    37             $paginator = new Paginator($paginatorAdapter);
    38             return $paginator;
    39         }
    40         $resultSet = $this->tableGateway->select();
    41         return $resultSet;
    42     }
    43 
    44     public function getStudent($id)
    45     {
    46         $id  = (int) $id;
    47         $rowset = $this->tableGateway->select(array('id' => $id));
    48         $row = $rowset->current();
    49         if (!$row) {
    50             throw new Exception("Could not find row $id");
    51         }
    52         return $row;
    53     }
    54 
    55 
    56     public function deleteStudent($id)
    57     {
    58         $this->tableGateway->delete(array('id' => $id));
    59     }
    60 
    61     public function getLIValue(){
    62         return $this->tableGateway->getLastInsertValue();
    63     }
    64 
    65 
    66 }
    StudentTable.php Model/StudentTable.php
    
    
     1    Student/IndexController.php 调用数据库
    public function indexAction(){ 2 /* return new ViewModel(array( 3 'students' => $this->getStudentTable()->fetchAll(), //不分页 4 ));*/ 5 $page=$this->params('page');//走分页 在model.config.php里面设置
    1       model.config.php      

    'defaults' => array( 2 'controller' => 'StudentControllerIndex', 3 'action' => 'index', 4 'page'=>'1', 5 ),
    
    
    

    6 $paginator = $this->getStudentTable()->fetchAll(true); 7 // set the current page to what has been passed in query string, or to 1 if none set 8 $paginator->setCurrentPageNumber((int)$this->params()->fromQuery('page', $page)); 9 // set the number of items per page to 10 10 $paginator->setItemCountPerPage(10); 11 12 return new ViewModel(array( 13 'paginator' => $paginator //模板页面调用的时候的名字 14 )); 15 //print_r($this->getStudentTable()->fetchAll()); 16 17 }
     1在模板页面的调用  
    <?php foreach ($this->paginator as $student) : ?> 2 <tr id="<?php echo $this->escapeHtml($student->id);?>"> 3 <td><?php echo $this->escapeHtml($student->id);?></td> 4 <td><?php echo $this->escapeHtml($student->name);?></td> 5 <td><?php echo $this->escapeHtml($student->phone);?></td> 6 <td><?php echo $this->escapeHtml($student->email);?></td>//应用了在Student.php的别名 7 <td><?php echo $this->escapeHtml($student->mark);?></td> 8 <td><a href='#' class='icol-bandaid editUserInfo'></a>&nbsp;&nbsp; 9 <a href='#' class='icol-key changePwd'></a>&nbsp;&nbsp; 10 <a herf='#' class='icol-cross deleteStud'></a> 11 </td> 12 </tr> 13 <?php endforeach;?>
  • 相关阅读:
    随机数生成程序代码( 伪随机<stdlib.h> )
    C++的学习 (此博客将一直补充更新下去,C++语法方面的内容不开新随笔了, *【语法学习】)
    sdut oj 1510 Contest02-4 Spiral
    POJ 2017 Speed Limit (直叙式的简单模拟 编程题目 动态属性很少,难度小)
    JavaWeb-入门第一课-1.静态web动态web 2.web服务器 3.下载和安装Tomcat-web服务器
    java小知识,驼峰规则
    亚马逊 协同过滤算法 Collaborative filtering
    第一个JSP程序
    物理学步入禅境:缘起性空
    人既然知道努力就可以进步,为什么还是会不努力?
  • 原文地址:https://www.cnblogs.com/zhangjun516/p/3385706.html
Copyright © 2011-2022 走看看