首页 > 作文

Yii框架自定义数据库操作组件示例

更新时间:2023-04-08 05:49:36 阅读: 评论:0

本文实例讲述了yii框架自定义数据库操作组件。分享给大家供大家参考,具体如下:

yii 的数据库操作对象提供的方法确实很方便。 但是有的时候我们已经习惯了我们以前编写php的数据库操作语法,没有那么多时间去仔细看每个yii提供的数据库操作语法,怎么办呢? 那就是一边学习,一边二次封装自己习惯的数据库操作类。 以后我们使用数据库操作对象,就用我们自己定义的组件去操作。

将我的数据库操作组件注册进配置文件web.php 中

array(  'components' => array(    //自定义数据库操作组件    'dboper'  => array(      'class'   => 'app\components\dboper\realization\dbrealization1'    ),    //yii 框架数据库连接组件    'db'      =>  array(        'class'     => 'yii\db\connection',        'dsn'      => 'mysql:host=localhost;dbname=yii',        'urname'   => 'root',        'password'   => '123456',        'chart'    => 'utf8'      );  ))

然后我们就可以在components 目录下定义我们的数据库操作类了。 因为,不知道怎么去获得php pdo 的原生操作对象,所以这里是对yii数据库操作类的一个二次封装。

接口文件 dboper.php 自定义的数据库操作类都得实现该接口

<?phpnamespace app\components\dboper;/** * 自定义数据库操作组件 依赖系统定义组件db */interface dboper{  /**   * 查询多条数据   * @param   * string $sql 需要查询的sql语句   * array $keyval 字段映射   * @return   * array 查询结果   */  public function fetchall($sql='',$keyval=array());  /**   * 查询一条数据 原生sql   * @param   * string $sql 需要查询的sql语句   * array $keyval 字段映射   * @return   * array 查询结果   */  public function fetch($sql='',$keyval=array());  /**   * 添加数据   * @param   * string $tablename 表名   * array $values 要插入的数据   * @return   * int 受影响的行数   */  public function inrt($tablename='',$values=array());  /**   * 更新数据   * @param   * string $tablename 表名   * array | string $where 修改条件 为 1 时更改该表所有的行   * array $update 要更新的数据    * @return   * int 受影响的行数   */  public function update($tablename='',$where='',$update=array());  /**   * 删除数据   * @param   * string $tablename 表名   * array | string $where 删除条件   * @return   * int 受影响的行数   */  public function delete($tablename='',$where='');  /**   * 事务处理   * @param   * array $sqls 要执行的sql集合   * return   * boolean 是否执行成功   */  public function transcation($sqls = array());  /**   * 获得数据库链接   */  public function getyiidbconnection();}

针对dboper 接口的实现类 dbrealization1.php

&l早恋t;?phpnamespace app\components\dboper\realization;u yii;u app\components\dboper\dboper;/** * 自定义数据库操作组件实现类 */class dbrealization1 implements dboper{  private $db = null;  /**   * interface @override   */  public function fetchall($sql='',$keyval=array())  {    if($sql === '')      return array();    $result = $this->getqueryobj($sql,$keyval)->queryall();    if($result)      return $result;    el      return array();  }  /**   * interface @override   */  public function fetch($sql='',$keyval=array())  {    if($sql === '')      return array();    $result = $this->getqueryobj($sql,$keyval)->queryone();    if($result)      return $result;    el      return不淑 array();  }  /**   * interface @override   */  pub恰同学少年观后感lic function inrt($tablename='',$values=array())  {    if($tablename === '')      return 0;    $inrt = $this->getyiidbconnection()->createcommand();    if(is_array($values[0]))    {      $keys = array_keys($values[0]);      return $inrt->batchinrt($tablename,$keys,$values)->execute();    }    return $inrt->inrt($tablename,$values)->execute();  }  /**   * interface @override   */  public function update($tablename='',$where = '',$update=array())  {    if($tablename === '')      return 0;    if($where === '')      return 0;    return $this->getyiidbconnection()        ->createcommand()        ->update($tablename,$update,$where)        ->execute();  }  /**   * interface @override   */  public function delete($tablename='',$where='')  {    if(安全保卫管理制度$tablename === '')      return 0;    return $this->getyiidbconnection()        ->createcommand()        ->delete($tablename,$where)        ->execute();  }  /**   * 获得查询操作对象   * @return    * object    */  private function getqueryobj($sql='',$keyval=array())  {    $query = $this->getyiidbconnection()->createcommand($sql);    if(!empty($keyval))      $query->bindvalues($keyval);    return $query;  }  /**   * interface @override   */  public function transcation($sqls = array())  {    if(empty($sqls))      return fal;    $db = $this->getyiidbconnection();    $outertransaction = $db->begintransaction();    $runclient = true;    try    {      foreach($sqls as $sql)      {        $db->createcommand($sql)->execute();      }      $outertransaction->commit();    }catch(\exception $e)宋朝时间{      $runclient = fal;      $outertransaction->rollback();    }    return $runclient;  }  /**   * interface @override   */  public function getyiidbconnection()  {    if($this->db === null)    {      $this->db = yii::$app->db;    }    return $this->db;  }}

注意:我的自定义数据库操作类 依赖 yii::$app->db 这个组件, 也就是框架自带的数据库连接组件

然后我们就可以通过 yii::$app->dboper 去操作数据库了。

本文发布于:2023-04-08 05:49:34,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/7b9112c0478025146c16bede4c7c2b92.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:Yii框架自定义数据库操作组件示例.doc

本文 PDF 下载地址:Yii框架自定义数据库操作组件示例.pdf

标签:操作   数据库   组件   自定义
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图