本文實例講述了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(){    /* 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;?>
希望本文所述對大家基于Zend Framework框架的PHP程序設計有所幫助。
新聞熱點
疑難解答
圖片精選