适用于yii1.1的thinkphp化的db操作类

前段时间的一个项目是要对一个用yii1.1写的商城做修改,不怎么好写,不过比面向过程的ecshop好得多,之前刚开始改ecshop还真是头大

yii1.1其中数据库操作花了我不少时间去找各种例子进行测试,出于日后可能还要改的原因,我将数据库的一些操作改成了thinkphp的形式,代码如下

<?php
/**gcud数据库操作
 * @version 20191231
 */

class gcudDb
{
    private $TableName;
    private $Conditions;
    private $ConditionsParameters;
    private $FieldsString;

    private function getDbCommand()
    {
        return \Yii::app()->db->createCommand();
    }

    private function BuildCondition()
    {
        $this->ConditionsParameters = [];
        $this->ConditionsParameters[‘fieldString‘] = ‘‘;
        $this->ConditionsParameters[‘parameters‘] = [];
        if ($this->Conditions)
            foreach ($this->Conditions as $Key => $Value) {
                $this->ConditionsParameters[‘fieldString‘] .= " and $Key=:$Key";
                $this->ConditionsParameters[‘parameters‘][":$Key"] = $Value;
            }
        $this->ConditionsParameters[‘fieldString‘] = ltrim($this->ConditionsParameters[‘fieldString‘], ‘ and ‘);
    }

    public static function name($TableName)
    {
        $Table = new static();
        $Table->TableName = "{{_$TableName}}";
        return $Table;
    }

    public function field($FieldString)
    {
        $this->FieldsString = $FieldString;
        return $this;
    }

    public function where($field, $value)
    {
        $this->Conditions[$field] = $value;
        return $this;
    }

    public function insert($Data)
    {
        self::getDbCommand()->insert($this->TableName, $Data);
    }

    public function delete()
    {
        $this->BuildCondition();
        self::getDbCommand()->delete($this->TableName, $this->ConditionsParameters[‘fieldString‘],
            $this->ConditionsParameters[‘parameters‘]);
    }

    public function find()
    {
        $this->BuildCondition();
        return self::getDbCommand()->select($this->FieldsString)
            ->from($this->TableName)->where($this->ConditionsParameters[‘fieldString‘],
                $this->ConditionsParameters[‘parameters‘])->queryRow();
    }

    public function column($Field)
    {
        $this->BuildCondition();
        $Data = self::getDbCommand()->select($Field)
            ->from($this->TableName)->where($this->ConditionsParameters[‘fieldString‘],
                $this->ConditionsParameters[‘parameters‘])->queryAll();
        $ReturnData = null;
        foreach ($Data as $Item) {
            $ReturnData[] = $Item[$Field];
        }
        return $ReturnData;
    }

    public function value($Field)
    {
        $this->BuildCondition();
        $Data = self::getDbCommand()->select($Field)->from($this->TableName)
            ->where($this->ConditionsParameters[‘fieldString‘],
                $this->ConditionsParameters[‘parameters‘])->queryRow();
        return $Data[$Field];
    }

    public function count()
    {
        $this->BuildCondition();
        $Data = self::getDbCommand()->select(‘count(1) gcudcount‘)
            ->from($this->TableName)->where($this->ConditionsParameters[‘fieldString‘],
                $this->ConditionsParameters[‘parameters‘])->queryRow();
        return $Data[‘gcudcount‘];
    }

    public function update($Data)
    {
        $this->BuildCondition();
        self::getDbCommand()->update($this->TableName, $Data,
            $this->ConditionsParameters[‘fieldString‘],
            $this->ConditionsParameters[‘parameters‘]);
    }
}

db操作风格是5.1的,where操作仅支持直接的deng‘yu

来源:http://www.1994july.club/seojishu/

原文地址:https://www.cnblogs.com/1994jinnan/p/12203349.html

时间: 2024-11-12 20:11:57

适用于yii1.1的thinkphp化的db操作类的相关文章

php的redis 操作类,适用于单台或多台、多组redis服务器操作

redis 操作类,包括单台或多台.多组redis服务器操作,适用于业务复杂.高性能要求的 php web 应用. redis.php: <?php /* redis 操作类,适用于单台或多台.多组redis服务器操作 使用方法: 1.$rs=new mz_redis();$rs->load_config_file('redis_config1.php');$www=$rs->connect(1,true,0)==单台读连接,连接read_array第一个元素对应的redis服务器中的随

thinkphp 对数据库的操作

查看ThinkPHP完全开发手册3.1 首先编辑配置文件 thinkphp这个数据库就不乱改了 昨天新建了一个 confluence(utf8)数据库 所以就用它学习一下吧,因为就只建立了一个数据库,还没有表,可能和手册里的情况不太一样,到时候再百度一下吧 <?php return array( //'配置项'=>'配置值' //'USERNAME'=>'admin', //赋值 //数据库配置信息 'DB_TYPE' => 'mysql', // 数据库类型 'DB_HOST'

THINKPHP源码学习--------验证码类

TP3.2验证码类的理解 今天在学习中用到了THINKPHP验证码,为了了解究竟,就开始阅读TP验证码的源码. 源码位置:./ThinkPHP/Library/Think/Verify.class.php 首先分段来阅读源码 1.namespace Think; Class Verify表示Thinkphp命名空间下的Verify类 2. protected $config = array( 'seKey'    => 'ThinkPHP.CN', // 验证码加密密钥 'codeSet'  =

ThinkPHP中的__initialize()和类的构造函数__construct()

ThinkPHP中的__initialize()和类的构造函数__construct()网上有很多关于__initialize()的说法和用法,总感觉不对头,所以自己测试了一下.将结果和大家分享.不对请更正.首先,我要说的是1.__initialize()不是php类中的函数,php类的构造函数只有__construct().2.类的初始化:子类如果有自己的构造函数(__construct()),则调用自己的进行初始化,如果没有,则调用父类的构造函数进行自己的初始化.3.当子类和父类都有__co

Thinkphp入门 二 —空操作、空模块、模块分组、前置操作、后置操作、跨模块调用(46)

原文:Thinkphp入门 二 -空操作.空模块.模块分组.前置操作.后置操作.跨模块调用(46) [空操作处理] 看下列图: 实际情况:我们的User控制器没有hello()这个方法 一个对象去访问这个类不存在的方法,那么它会去访问”魔术方法__call()” 用户访问一个不存在的操作—>解决:给每个控制器都定义个_empty()方法来处理 第二个解决方法:定义一个空操作 [空模块处理] 我们使用一个类,但是现在这个类还没有被include进来. 我们可以通过自动加载机制处理__autoloa

一个数据库操作类,适用于Oracle,ACCESS,SQLSERVER

最近做了一个数据诊断的项目,里面自己写了一个数据库的操作类,包含:连接数据库.读数据表.执行SQL操作,释放数据库等组成,希望对大家有用,由于水平有限,若有错误或者代码不足地方欢迎指正,谢谢. ADOOperate.H [cpp] view plaincopy ////////////////////////////////////////////////////////////////////// // 类功能:用于数据库的操作 主要实现 连接数据库 读数据表 检查数据表 执行SQL语句 //

iOS数据持久化之二——归档与设计可存储化的数据模型基类

iOS数据持久化之二--归档与设计可存储化的数据模型基类 一.引言 在上一篇博客中,我们介绍了用plist文件进行数据持久化的方法.虽然简单易用,但随着开发的深入,你会发现,这种方式还是有很大的局限性.试想,如果我们可以将用户的登录返回信息模型,游戏中角色的属性信息模型进行直接的持久化存取,那是不是非常爽的事,幸运的是,我们可以通过归档,来设计一个这样的数据模型. 二.先来精通归档吧 归档也是iOS提供给开发者的一种数据存储的方式,事实上,几乎所有的数据类型都可以通过归档来进行存取.其存储与读取

ThinkPHP 数据库表结构处理类(简单实用)

<?php /*  * mysql表结构处理类  * 创建数据表,增加,编辑,删除表中字段  *  */ class MysqlManage{ /*  * 创建数据库,并且主键是aid  * table 要查询的表名  */ function createTable($table){ $sql="CREATE TABLE IF NOT EXISTS `$table` (`aid` INT NOT NULL primary key)ENGINE = InnoDB;"; M()-&g

【discuzX2】/source/class/class_core.php文件中数据库操作类DB及db_mysql分析

<?php /** * Discuz MySQL 类的支持 程序中一般不直接使用此类,而是使用DB类,DB类对db_mysql类中的方法又进行了二次封装 * */ class db_mysql { var $tablepre; var $version = ''; var $querynum = 0; var $slaveid = 0; var $curlink; var $link = array(); var $config = array(); var $sqldebug = array(