4 changed files with 0 additions and 213 deletions
			
			
		@ -1,68 +0,0 @@ | 
				
			|||||||
<?php | 
					 | 
				
			||||||
/** | 
					 | 
				
			||||||
 * @link http://www.yiiframework.com/ | 
					 | 
				
			||||||
 * @copyright Copyright (c) 2008 Yii Software LLC | 
					 | 
				
			||||||
 * @license http://www.yiiframework.com/license/ | 
					 | 
				
			||||||
 */ | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
namespace yii\db\mssql; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/** | 
					 | 
				
			||||||
 * This is an extension of default PDO class for MSSQL and DBLIB drivers. It provides workaround for improperly | 
					 | 
				
			||||||
 * implemented functionalities of the drivers. | 
					 | 
				
			||||||
 * | 
					 | 
				
			||||||
 * @author Timur Ruziev <qiang.xue@gmail.com> | 
					 | 
				
			||||||
 * @since 2.0 | 
					 | 
				
			||||||
 */ | 
					 | 
				
			||||||
class PDO extends \PDO | 
					 | 
				
			||||||
{ | 
					 | 
				
			||||||
	/** | 
					 | 
				
			||||||
	 * Returns last inserted ID value. | 
					 | 
				
			||||||
	 * | 
					 | 
				
			||||||
	 * @param string|null sequence the sequence name. Defaults to null. | 
					 | 
				
			||||||
	 * @return integer last inserted ID value. | 
					 | 
				
			||||||
	 */ | 
					 | 
				
			||||||
	public function lastInsertId($sequence = null) | 
					 | 
				
			||||||
	{ | 
					 | 
				
			||||||
		return $this->query('SELECT CAST(COALESCE(SCOPE_IDENTITY(), @@IDENTITY) AS bigint)')->fetchColumn(); | 
					 | 
				
			||||||
	} | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/** | 
					 | 
				
			||||||
	 * Begin a transaction. | 
					 | 
				
			||||||
	 * | 
					 | 
				
			||||||
	 * Is is necessary to override PDO's method as MSSQL PDO drivers does not support transactions. | 
					 | 
				
			||||||
	 * | 
					 | 
				
			||||||
	 * @return boolean | 
					 | 
				
			||||||
	 */ | 
					 | 
				
			||||||
	public function beginTransaction() | 
					 | 
				
			||||||
	{ | 
					 | 
				
			||||||
		$this->exec('BEGIN TRANSACTION'); | 
					 | 
				
			||||||
		return true; | 
					 | 
				
			||||||
	} | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/** | 
					 | 
				
			||||||
	 * Commit a transaction. | 
					 | 
				
			||||||
	 * | 
					 | 
				
			||||||
	 * Is is necessary to override PDO's method as MSSQL PDO drivers does not support transactions. | 
					 | 
				
			||||||
	 * | 
					 | 
				
			||||||
	 * @return boolean | 
					 | 
				
			||||||
	 */ | 
					 | 
				
			||||||
	public function commit() | 
					 | 
				
			||||||
	{ | 
					 | 
				
			||||||
		$this->exec('COMMIT TRANSACTION'); | 
					 | 
				
			||||||
		return true; | 
					 | 
				
			||||||
	} | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/** | 
					 | 
				
			||||||
	 * Rollback a transaction. | 
					 | 
				
			||||||
	 * | 
					 | 
				
			||||||
	 * Is is necessary to override PDO's method as MSSQL PDO drivers does not support transaction. | 
					 | 
				
			||||||
	 * | 
					 | 
				
			||||||
	 * @return boolean | 
					 | 
				
			||||||
	 */ | 
					 | 
				
			||||||
	public function rollBack() | 
					 | 
				
			||||||
	{ | 
					 | 
				
			||||||
		$this->exec('ROLLBACK TRANSACTION'); | 
					 | 
				
			||||||
		return true; | 
					 | 
				
			||||||
	} | 
					 | 
				
			||||||
} | 
					 | 
				
			||||||
@ -1,19 +0,0 @@ | 
				
			|||||||
<?php | 
					 | 
				
			||||||
/** | 
					 | 
				
			||||||
 * @link http://www.yiiframework.com/ | 
					 | 
				
			||||||
 * @copyright Copyright (c) 2008 Yii Software LLC | 
					 | 
				
			||||||
 * @license http://www.yiiframework.com/license/ | 
					 | 
				
			||||||
 */ | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
namespace yii\db\mssql; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/** | 
					 | 
				
			||||||
 * QueryBuilder is the query builder for MS SQL databases. | 
					 | 
				
			||||||
 * | 
					 | 
				
			||||||
 * @author Timur Ruziev <resurtm@gmail.com> | 
					 | 
				
			||||||
 * @since 2.0 | 
					 | 
				
			||||||
 */ | 
					 | 
				
			||||||
class QueryBuilder extends \yii\db\QueryBuilder | 
					 | 
				
			||||||
{ | 
					 | 
				
			||||||
	// TODO: mssql driver | 
					 | 
				
			||||||
} | 
					 | 
				
			||||||
@ -1,93 +0,0 @@ | 
				
			|||||||
<?php | 
					 | 
				
			||||||
/** | 
					 | 
				
			||||||
 * @link http://www.yiiframework.com/ | 
					 | 
				
			||||||
 * @copyright Copyright (c) 2008 Yii Software LLC | 
					 | 
				
			||||||
 * @license http://www.yiiframework.com/license/ | 
					 | 
				
			||||||
 */ | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
namespace yii\db\mssql; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
use yii\db\TableSchema; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/** | 
					 | 
				
			||||||
 * Schema is the class for retrieving metadata from a MS SQL database (version 2008 and above). | 
					 | 
				
			||||||
 * | 
					 | 
				
			||||||
 * @author Timur Ruziev <qiang.xue@gmail.com> | 
					 | 
				
			||||||
 * @since 2.0 | 
					 | 
				
			||||||
 */ | 
					 | 
				
			||||||
class Schema extends \yii\db\Schema | 
					 | 
				
			||||||
{ | 
					 | 
				
			||||||
	/** | 
					 | 
				
			||||||
	 * Default schema name to be used. | 
					 | 
				
			||||||
	 */ | 
					 | 
				
			||||||
	const DEFAULT_SCHEMA = 'dbo'; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/** | 
					 | 
				
			||||||
	 * @var array mapping from physical column types (keys) to abstract column types (values) | 
					 | 
				
			||||||
	 */ | 
					 | 
				
			||||||
	public $typeMap = array( | 
					 | 
				
			||||||
		// TODO: mssql driver | 
					 | 
				
			||||||
	); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/** | 
					 | 
				
			||||||
	 * @param string $name | 
					 | 
				
			||||||
	 * @return TableSchema | 
					 | 
				
			||||||
	 */ | 
					 | 
				
			||||||
	public function loadTableSchema($name) | 
					 | 
				
			||||||
	{ | 
					 | 
				
			||||||
		return null; | 
					 | 
				
			||||||
	} | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/** | 
					 | 
				
			||||||
	 * Quotes a table name for use in a query. | 
					 | 
				
			||||||
	 * A simple table name has no schema prefix. | 
					 | 
				
			||||||
	 * @param string $name table name. | 
					 | 
				
			||||||
	 * @return string the properly quoted table name. | 
					 | 
				
			||||||
	 */ | 
					 | 
				
			||||||
	public function quoteSimpleTableName($name) | 
					 | 
				
			||||||
	{ | 
					 | 
				
			||||||
		return strpos($name, '[') !== false ? $name : '[' . $name . ']'; | 
					 | 
				
			||||||
	} | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/** | 
					 | 
				
			||||||
	 * Quotes a column name for use in a query. | 
					 | 
				
			||||||
	 * A simple column name has no prefix. | 
					 | 
				
			||||||
	 * @param string $name column name. | 
					 | 
				
			||||||
	 * @return string the properly quoted column name. | 
					 | 
				
			||||||
	 */ | 
					 | 
				
			||||||
	public function quoteSimpleColumnName($name) | 
					 | 
				
			||||||
	{ | 
					 | 
				
			||||||
		return strpos($name, '[') !== false || $name === '*' ? $name : '[' . $name . ']'; | 
					 | 
				
			||||||
	} | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/** | 
					 | 
				
			||||||
	 * Creates a query builder for the MSSQL database. | 
					 | 
				
			||||||
	 * @return QueryBuilder query builder interface. | 
					 | 
				
			||||||
	 */ | 
					 | 
				
			||||||
	public function createQueryBuilder() | 
					 | 
				
			||||||
	{ | 
					 | 
				
			||||||
		return new QueryBuilder($this->db); | 
					 | 
				
			||||||
	} | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/** | 
					 | 
				
			||||||
	 * Returns all table names in the database. | 
					 | 
				
			||||||
	 * This method should be overridden by child classes in order to support this feature | 
					 | 
				
			||||||
	 * because the default implementation simply throws an exception. | 
					 | 
				
			||||||
	 * @param string $schema the schema of the tables. Defaults to empty string, meaning the current or default schema. | 
					 | 
				
			||||||
	 * @return array all table names in the database. The names have NO the schema name prefix. | 
					 | 
				
			||||||
	 */ | 
					 | 
				
			||||||
	protected function findTableNames($schema = '') | 
					 | 
				
			||||||
	{ | 
					 | 
				
			||||||
		if ('' === $schema) { | 
					 | 
				
			||||||
			$schema = self::DEFAULT_SCHEMA; | 
					 | 
				
			||||||
		} | 
					 | 
				
			||||||
		$sql = "SELECT TABLE_NAME FROM [INFORMATION_SCHEMA].[TABLES] WHERE TABLE_SCHEMA = :schema AND TABLE_TYPE = 'BASE TABLE'"; | 
					 | 
				
			||||||
		$names = $this->db->createCommand($sql, array(':schema' => $schema))->queryColumn(); | 
					 | 
				
			||||||
		if (self::DEFAULT_SCHEMA !== $schema) { | 
					 | 
				
			||||||
			foreach ($names as $index => $name) { | 
					 | 
				
			||||||
				$names[$index] = $schema . '.' . $name; | 
					 | 
				
			||||||
			} | 
					 | 
				
			||||||
		} | 
					 | 
				
			||||||
		return $names; | 
					 | 
				
			||||||
	} | 
					 | 
				
			||||||
} | 
					 | 
				
			||||||
@ -1,33 +0,0 @@ | 
				
			|||||||
<?php | 
					 | 
				
			||||||
/** | 
					 | 
				
			||||||
 * @link http://www.yiiframework.com/ | 
					 | 
				
			||||||
 * @copyright Copyright (c) 2008 Yii Software LLC | 
					 | 
				
			||||||
 * @license http://www.yiiframework.com/license/ | 
					 | 
				
			||||||
 */ | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
namespace yii\db\mssql; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/** | 
					 | 
				
			||||||
 * This is an extension of default PDO class for MSSQL SQLSRV driver. It provides workaround for improperly | 
					 | 
				
			||||||
 * implemented functionalities of the PDO SQLSRV driver. | 
					 | 
				
			||||||
 * | 
					 | 
				
			||||||
 * @author Timur Ruziev <resurtm@gmail.com> | 
					 | 
				
			||||||
 * @since 2.0 | 
					 | 
				
			||||||
 */ | 
					 | 
				
			||||||
class SqlsrvPDO extends \PDO | 
					 | 
				
			||||||
{ | 
					 | 
				
			||||||
	/** | 
					 | 
				
			||||||
	 * Returns last inserted ID value. | 
					 | 
				
			||||||
	 * | 
					 | 
				
			||||||
	 * SQLSRV driver supports PDO::lastInsertId() with one peculiarity: when $sequence value is null | 
					 | 
				
			||||||
	 * or empty string it returns empty string. But when parameter is not specified it's working | 
					 | 
				
			||||||
	 * as expected and returns actual last inserted ID (like the other PDO drivers). | 
					 | 
				
			||||||
	 * | 
					 | 
				
			||||||
	 * @param string|null $sequence the sequence name. Defaults to null. | 
					 | 
				
			||||||
	 * @return integer last inserted ID value. | 
					 | 
				
			||||||
	 */ | 
					 | 
				
			||||||
	public function lastInsertId($sequence = null) | 
					 | 
				
			||||||
	{ | 
					 | 
				
			||||||
		return !$sequence ? parent::lastInsertId() : parent::lastInsertId($sequence); | 
					 | 
				
			||||||
	} | 
					 | 
				
			||||||
} | 
					 | 
				
			||||||
					Loading…
					
					
				
		Reference in new issue