Commit 4ba05468 by Qiang Xue

...

parent a9439e90
......@@ -32,7 +32,7 @@ class ColumnSchema extends \yii\base\Component
public $allowNull;
/**
* @var string logical type of this column. Possible logic types include:
* string, text, boolean, smallint, integer, bigint, float, decimal, datetime, timestamp, time, date, binary
* string, text, boolean, smallint, integer, bigint, float, decimal, datetime, timestamp, time, date, binary, money
*/
public $type;
/**
......
......@@ -163,8 +163,7 @@ class Command extends \yii\base\Component
$sql = $this->getSql();
try {
$this->pdoStatement = $this->connection->pdo->prepare($sql);
}
catch (\Exception $e) {
} catch (\Exception $e) {
\Yii::error($e->getMessage() . "\nFailed to prepare SQL: $sql", __CLASS__);
$errorInfo = $e instanceof \PDOException ? $e->errorInfo : null;
throw new Exception($e->getMessage(), (int)$e->getCode(), $errorInfo);
......@@ -289,8 +288,7 @@ class Command extends \yii\base\Component
\Yii::endProfile(__METHOD__ . "($sql)", __CLASS__);
}
return $n;
}
catch (Exception $e) {
} catch (\Exception $e) {
if ($this->connection->enableProfiling) {
\Yii::endProfile(__METHOD__ . "($sql)", __CLASS__);
}
......@@ -360,7 +358,7 @@ class Command extends \yii\base\Component
*/
public function queryScalar($params = array())
{
$result = $this->queryInternal('fetchColumn', $params);
$result = $this->queryInternal('fetchColumn', $params, 0);
if (is_resource($result) && get_resource_type($result) === 'stream') {
return stream_get_contents($result);
} else {
......@@ -452,8 +450,7 @@ class Command extends \yii\base\Component
}
return $result;
}
catch (Exception $e) {
} catch (\Exception $e) {
if ($db->enableProfiling) {
\Yii::endProfile(__METHOD__ . "($sql)", __CLASS__);
}
......
......@@ -61,8 +61,7 @@ use yii\db\Exception;
* $connection->createCommand($sql2)->execute();
* // ... executing other SQL statements ...
* $transaction->commit();
* }
* catch(Exception $e) {
* } catch(Exception $e) {
* $transaction->rollBack();
* }
* ~~~
......
......@@ -77,6 +77,10 @@ class Query extends \yii\base\Object
public $union;
/**
* @param Connection $connection
* @return string
*/
public function getSql($connection)
{
return $connection->getQueryBuilder()->build($this);
......
......@@ -22,22 +22,9 @@ class QueryBuilder extends \yii\base\Object
{
/**
* @var array the abstract column types mapped to physical column types.
* Child classes should override this property to declare possible type mappings.
*/
public $typeMap = array(
'pk' => 'int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY',
'string' => 'varchar(255)',
'text' => 'text',
'integer' => 'int(11)',
'float' => 'float',
'decimal' => 'decimal',
'datetime' => 'datetime',
'timestamp' => 'timestamp',
'time' => 'time',
'date' => 'date',
'binary' => 'blob',
'boolean' => 'tinyint(1)',
'money' => 'decimal(19,4)',
);
public $typeMap = array();
/**
* @var Connection the database connection.
*/
......
......@@ -4,7 +4,7 @@
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.yiiframework.com/
* @copyright Copyright &copy; 2008-2011 Yii Software LLC
* @copyright Copyright &copy; 2008-2012 Yii Software LLC
* @license http://www.yiiframework.com/license/
*/
......@@ -20,6 +20,22 @@ use yii\db\Exception;
*/
abstract class Schema extends \yii\base\Object
{
const TYPE_PK = 'pk';
const TYPE_STRING = 'string';
const TYPE_TEXT = 'text';
const TYPE_SMALLINT = 'smallint';
const TYPE_INTEGER = 'integer';
const TYPE_BIGINT = 'bigint';
const TYPE_FLOAT = 'float';
const TYPE_DECIMAL = 'decimal';
const TYPE_DATETIME = 'datetime';
const TYPE_TIMESTAMP = 'timestamp';
const TYPE_TIME = 'time';
const TYPE_DATE = 'date';
const TYPE_BINARY = 'binary';
const TYPE_BOOLEAN = 'boolean';
const TYPE_MONEY = 'money';
/**
* @var \yii\db\dao\Connection the database connection
*/
......@@ -38,7 +54,7 @@ abstract class Schema extends \yii\base\Object
/**
* Constructor.
* @param CDbConnection $connection database connection.
* @param Connection $connection database connection.
*/
public function __construct($connection)
{
......@@ -48,7 +64,7 @@ abstract class Schema extends \yii\base\Object
/**
* Obtains the metadata for the named table.
* @param string $name table name. The table name may contain schema name if any. Do not quote the table name.
* @return CDbTableSchema table metadata. Null if the named table does not exist.
* @return TableSchema table metadata. Null if the named table does not exist.
*/
public function getTableSchema($name)
{
......
......@@ -15,16 +15,6 @@ namespace yii\db\dao;
*
* It may be extended by different DBMS driver to provide DBMS-specific table metadata.
*
* TableSchema provides the following information about a table:
* <ul>
* <li>{@link name}</li>
* <li>{@link rawName}</li>
* <li>{@link columns}</li>
* <li>{@link primaryKey}</li>
* <li>{@link foreignKeys}</li>
* <li>{@link sequenceName}</li>
* </ul>
*
* @author Qiang Xue <qiang.xue@gmail.com>
* @since 2.0
*/
......
......@@ -27,8 +27,7 @@ use yii\db\Exception;
* $connection->createCommand($sql2)->execute();
* //.... other SQL executions
* $transaction->commit();
* }
* catch(Exception $e) {
* } catch(Exception $e) {
* $transaction->rollBack();
* }
* ~~~
......
......@@ -21,22 +21,22 @@ class QueryBuilder extends \yii\db\dao\QueryBuilder
/**
* @var array the abstract column types mapped to physical column types.
*/
public $columnTypes = array(
'pk' => 'int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY',
'string' => 'varchar(255)',
'text' => 'text',
'smallint' => 'smallint',
'integer' => 'int(11)',
'bigint'=> 'bigint',
'boolean' => 'tinyint(1)',
'float' => 'float',
'decimal' => 'decimal',
'money' => 'decimal(19,4)',
'datetime' => 'datetime',
'timestamp' => 'timestamp',
'time' => 'time',
'date' => 'date',
'binary' => 'blob',
public $typeMap = array(
Schema::TYPE_PK => 'int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY',
Schema::TYPE_STRING => 'varchar(255)',
Schema::TYPE_TEXT => 'text',
Schema::TYPE_SMALLINT => 'smallint(6)',
Schema::TYPE_INTEGER => 'int(11)',
Schema::TYPE_BIGINT => 'bigint(20)',
Schema::TYPE_FLOAT => 'float',
Schema::TYPE_DECIMAL => 'decimal',
Schema::TYPE_DATETIME => 'datetime',
Schema::TYPE_TIMESTAMP => 'timestamp',
Schema::TYPE_TIME => 'time',
Schema::TYPE_DATE => 'date',
Schema::TYPE_BINARY => 'blob',
Schema::TYPE_BOOLEAN => 'tinyint(1)',
Schema::TYPE_MONEY => 'decimal(19,4)',
);
/**
......
......@@ -10,6 +10,8 @@
namespace yii\db\dao\mysql;
use yii\db\dao\TableSchema;
/**
* Schema is the class for retrieving metadata information from a MySQL database (version 4.1.x and 5.x).
*
......@@ -43,7 +45,7 @@ class Schema extends \yii\db\dao\Schema
/**
* Loads the metadata for the specified table.
* @param string $name table name
* @return TableSchema driver dependent table metadata. Null if the table does not exist.
* @return \yii\db\dao\TableSchema driver dependent table metadata. Null if the table does not exist.
*/
protected function loadTableSchema($name)
{
......@@ -58,7 +60,7 @@ class Schema extends \yii\db\dao\Schema
/**
* Generates various kinds of table names.
* @param CMysqlTableSchema $table the table instance
* @param \yii\db\dao\TableSchema $table the table instance
* @param string $name the unquoted table name
*/
protected function resolveTableNames($table, $name)
......@@ -96,7 +98,7 @@ class Schema extends \yii\db\dao\Schema
/**
* Collects the table column metadata.
* @param CMysqlTableSchema $table the table metadata
* @param \yii\db\dao\TableSchema $table the table metadata
* @return boolean whether the table exists in the database
*/
protected function findColumns($table)
......@@ -128,7 +130,7 @@ class Schema extends \yii\db\dao\Schema
/**
* Collects the foreign key column details for the given table.
* @param CMysqlTableSchema $table the table metadata
* @param \yii\db\dao\TableSchema $table the table metadata
*/
protected function findConstraints($table)
{
......
......@@ -43,18 +43,18 @@ CREATE TABLE yii_post
(
id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(128) NOT NULL,
create_time TIMESTAMP NOT NULL,
create_time INTEGER NOT NULL,
author_id INTEGER NOT NULL,
content TEXT,
CONSTRAINT FK_post_author FOREIGN KEY (author_id)
REFERENCES yii_user (id) ON DELETE CASCADE ON UPDATE RESTRICT
) TYPE=INNODB;
INSERT INTO yii_post (title, create_time, author_id, content) VALUES ('post 1','2000-01-01',1,'content 1');
INSERT INTO yii_post (title, create_time, author_id, content) VALUES ('post 2','2000-01-02',2,'content 2');
INSERT INTO yii_post (title, create_time, author_id, content) VALUES ('post 3','2000-01-03',2,'content 3');
INSERT INTO yii_post (title, create_time, author_id, content) VALUES ('post 4','2000-01-04',2,'content 4');
INSERT INTO yii_post (title, create_time, author_id, content) VALUES ('post 5','2000-01-05',3,'content 5');
INSERT INTO yii_post (title, create_time, author_id, content) VALUES ('post 1','1324854194',1,'content 1');
INSERT INTO yii_post (title, create_time, author_id, content) VALUES ('post 2','1324855194',2,'content 2');
INSERT INTO yii_post (title, create_time, author_id, content) VALUES ('post 3','1324856194',2,'content 3');
INSERT INTO yii_post (title, create_time, author_id, content) VALUES ('post 4','1324857194',2,'content 4');
INSERT INTO yii_post (title, create_time, author_id, content) VALUES ('post 5','1324858194',3,'content 5');
CREATE TABLE yii_comment
(
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment