コード例 #1
0
ファイル: DBHandleTest.php プロジェクト: echoOly/jomo
 public function setUp()
 {
     $this->db_config = $GLOBALS['UNITTEST_DB_CONFIG'];
     $handle = DBMysqlNamespace::createDBHandle2($this->db_config, "test", $this->encoding);
     assert($handle);
     $sql = 'create table if not exists tb_unittest(id int NOT NULL auto_increment,c1 int, PRIMARY KEY (id) )';
     $ret = $handle->execute($sql);
     $this->assertEquals($ret, TRUE);
     $this->handle = $handle;
 }
コード例 #2
0
ファイル: DBMysqlNamespaceTest.php プロジェクト: echoOly/jomo
 public function test_multiInstance()
 {
     $h1 = DBMysqlNamespace::createDBHandle($this->db_config, $this->dbname, $this->encoding);
     //print_r( $h1 );
     $arg = is_bool($h1) && $h1 === FALSE;
     $this->assertEquals($arg, FALSE);
     DBMysqlNamespace::releaseDBHandle($h1);
 }
コード例 #3
0
ファイル: SqlBuilderV5Test.php プロジェクト: echoOly/jomo
 public function setUp()
 {
     $dbLink = DBMysqlNamespace::createDBHandle(DBConfig::$SERVER_BANG_SLAVE, 'bang');
     $this->sqlBuilder = new SqlBuilderV5('bang_promotion', array('id' => 'INT', 'bang_id' => 'INT', 'title' => 'VARCHAR', 'description' => 'VARCHAR', 'create_at' => 'INT', 'status' => 'INT', 'refuse_reason' => 'VARCHAR'), $dbLink);
 }
コード例 #4
0
ファイル: DBHandle.class.php プロジェクト: echoOly/jomo
 /**
  * 关闭DB对象
  */
 public function close()
 {
     return DBMysqlNamespace::releaseDBHandle($this->_handle);
 }
コード例 #5
0
ファイル: model_builder.php プロジェクト: echoOly/jomo
    /**
     * 批量创建model文件
     * @param type $server 服务器配置,例如DBConfig::$SERVER_MS_SLAVE
     * @param type $database 数据库,例如'beijing'
     * @param type $tableLike 表范围,例如'pet_post',或者'%_post'
     * @param type $fileDir 放置model的目录
     * @return boolean
     */
    public static function createModels($server, $database, $tableLike, $fileDir = '')
    {
        //获取表名称
        $dbr = DBMysqlNamespace::createDBHandle($server, $database);
        $sql = "show tables like '{$tableLike}'";
        $tables = DBMysqlNamespace::getAll($dbr, $sql);
        if (empty($tables)) {
            return false;
        }
        //为每个表创建model
        foreach ($tables as $tableInfo) {
            //获取表字段
            $tableName = current($tableInfo);
            $sql = "DESC {$tableName}";
            $dbFields = DBMysqlNamespace::getAll($dbr, $sql);
            //生成代码文件需要的变量
            $dateText = date('Y-m-d H:i:s');
            $className = self::_getClassName($tableName);
            //fieldTypes
            $fieldTypes = self::_getFieldTypes($dbFields);
            $fieldTypesString = PhpCodeGenerator::genArray($fieldTypes, false, '    ');
            $fieldTypesString = trim($fieldTypesString);
            $code = <<<modelCode
<?php
/**
 * 使用单例模式的model
 * @Copyright (c) 2013 Ganji Inc.
 * @date {$dateText}
 * (使用code_base2/util/db/script/model_builder.php生成)
 */

require_once CODE_BASE2 . '/util/db/ModelV5.class.php';

class {$className} extends ModelV5 {
    
    /**
     * 实例
     */
    private static \$_instance = null;
    
    /**
     * 表名
     */
    protected \$tableName = '{$tableName}';
    
    /**
     * 表字段
     */
    protected \$fieldTypes = {$fieldTypesString};
    
    protected function __construct() {
        //require_once GANJI_CONF . '/DBConfig.class.php';
        //\$this->setHandler(DBConfig::\$SERVER_MS_MASTER, DBConfig::\$SERVER_MS_SLAVE, 'ganji_vehicle');
    }
    
    public static function getInstance() {
        if (self::\$_instance instanceof self) {
            return self::\$_instance;
        }
        
        self::\$_instance = new self();
        return self::\$_instance;
    }
}
modelCode;
            $filePath = self::_getFilePath($fileDir, $className);
            file_put_contents($filePath, $code);
            echo "{$filePath} 生成成功!\n";
        }
        return true;
    }
コード例 #6
0
ファイル: Model.class.php プロジェクト: echoOly/jomo
 /**
  * 根据where条件获取记录
  * @param string|array $where where条件
  *     string e.g. string 'id=3 and create_at<2222222 or type in (2,3)'
  *     array e.g. array('id' => 3, 'type' => 2)
  * @param string $fields 选择的字段 'id,type,create_at'
  * @param string $orderBy 排序条件 e.g. 'id desc'
  * @return type
  */
 public function getRow($where, $selectField = '*', $orderBy = '')
 {
     if (empty($where) || empty($selectField)) {
         return array();
     }
     if (strstr($selectField, 'count') || strstr($selectField, 'sum')) {
         $sql = $this->sqlBuilder->createSelectSql($selectField, $where);
     } else {
         $sql = $this->sqlBuilder->createSelectSql($selectField, $where, $orderBy, 1);
     }
     self::addSqlHistory($sql);
     return DBMysqlNamespace::getRow($this->getSlaveDb(), $sql);
 }
コード例 #7
0
 /**
  * @brief 设置 handle ping的属性
  * @param $value
  * @return void
  * @example 
  *      如果是crontabe 建议在开始是增加
  *      DBMysqlNamespace::setHandlePing(DBConstNamespace::HANDLE_PING); 句柄失效可以重连
  *      DBMysqlNamespace::setHandlePing(DBConstNamespace::NOT_HANDLE_PING); 句柄失效不能重连
  *      如果关闭可以设置 false, 默认是不开启的
  *      DBMysqlNamespace::setHandlePing();
  */
 public static function setHandlePing($value = false)
 {
     self::$_HANDLE_PING = $value;
 }
コード例 #8
0
ファイル: DBTransaction.class.php プロジェクト: echoOly/jomo
 /**
  * 运行SQL
  * @param string $sql
  * @return mixed
  */
 private function _runSQL($sql)
 {
     return DBMysqlNamespace::execute($this->_handle, $sql);
 }
コード例 #9
0
ファイル: ModelV5.class.php プロジェクト: echoOly/jomo
 /**
  * sql直接查询,暂时只支持读操作,需要写操作的时候再扩展
  * @param $sql
  */
 public function query($sql)
 {
     if (empty($sql)) {
         return false;
     }
     return DBMysqlNamespace::query($this->getSlaveDb(), $sql);
 }