本文整理汇总了PHP中CActiveRecord::getDbConnection方法的典型用法代码示例。如果您正苦于以下问题:PHP CActiveRecord::getDbConnection方法的具体用法?PHP CActiveRecord::getDbConnection怎么用?PHP CActiveRecord::getDbConnection使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CActiveRecord
的用法示例。
在下文中一共展示了CActiveRecord::getDbConnection方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: format
/**
* {@inheritDoc}
* @see IExportFormat::format()
*/
public function format(CActiveRecord $record, array $data, array $templates = array())
{
if (empty($data)) {
throw new CDbException(Yii::t('yii', 'Can not generate multiple insert command with empty data set.'));
}
$templates = array_merge(array('main' => "INSERT INTO {{tableName}} ({{columnInsertNames}}) VALUES \n{{rowInsertValues}};\n", 'columnInsertValue' => '{{value}}', 'columnInsertValueGlue' => ', ', 'rowInsertValue' => '({{columnInsertValues}})', 'rowInsertValueGlue' => ",\n", 'columnInsertNameGlue' => ', '), $templates);
$table = $record->tableSchema;
if ($table === null) {
throw new CDbException(Yii::t('yii', 'Table "{table}" does not exist.', array('{table}' => $record->tableName())));
}
$tableName = $table->rawName;
$columns = array();
foreach ($data as $rowData) {
foreach ($rowData as $columnName => $columnValue) {
if (!in_array($columnName, $columns, true)) {
if ($table->getColumn($columnName) !== null) {
$columns[] = $columnName;
}
}
}
}
$columnInsertNames = array();
foreach ($columns as $name) {
$columnInsertNames[$name] = $record->getDbConnection()->quoteColumnName($name);
}
$columnInsertNamesSqlPart = implode($templates['columnInsertNameGlue'], $columnInsertNames);
$rowInsertValues = array();
foreach ($data as $rowData) {
$columnInsertValues = array();
foreach ($columns as $columnName) {
/* @var $column CDbColumnSchema */
$column = $table->getColumn($columnName);
$columnValue = array_key_exists($columnName, $rowData) ? $rowData[$columnName] : new CDbException('NULL');
if ($columnValue instanceof CDbExpression) {
$columnInsertValue = $columnValue->expression;
// in reverse order to prevent precocious replacements on param values
foreach (array_reverse($columnValue->params) as $columnValueParamName => $columnValueParam) {
$secureColumnParamValue = $this->secureOutput($record->getDbConnection(), $columnValueParam);
$columnInsertValue = strtr(':' . $columnValueParamName, $secureColumnParamValue, $columnInsertValue);
}
} else {
$columnInsertValue = $column->typecast($columnValue);
if ($columnInsertValue === '' && $column->allowNull) {
$columnInsertValue = null;
}
$columnInsertValue = $this->secureOutput($record->getDbConnection(), $columnInsertValue);
}
$columnInsertValues[] = strtr($templates['columnInsertValue'], array('{{column}}' => $columnInsertNames[$columnName], '{{value}}' => $columnInsertValue));
}
$rowInsertValues[] = strtr($templates['rowInsertValue'], array('{{tableName}}' => $tableName, '{{columnInsertNames}}' => $columnInsertNamesSqlPart, '{{columnInsertValues}}' => implode($templates['columnInsertValueGlue'], $columnInsertValues)));
}
$sql = strtr($templates['main'], array('{{tableName}}' => $tableName, '{{columnInsertNames}}' => $columnInsertNamesSqlPart, '{{rowInsertValues}}' => implode($templates['rowInsertValueGlue'], $rowInsertValues)));
return $sql;
}
示例2: __construct
/**
* Builds a new COrderedIterator object. This object will iterate over the
* given $model records found in table. The found records will be filtered
* accordingly to the params in given $criteria object. If no criteria is
* provided, no filtering will be done. This method clones the criteria for
* its inner purposes, so the given criteria can be used for other things
* elsewhere.
*
* This iterator takes over the control of the $criteria->offset and the
* $criteria->order values. If such values are provided, they will be
* ignored for the iterations. If the $criteria->limit is provided, it will
* be used as a one-row fetch limit each time it will be needed until the
* end of the set is reached. If this is not provided, this object will try
* to find a value that is not too big and not too small to have good
* performances without exploding the memory.
*
* @param CActiveRecord $model
* @param CDbCriteria $criteria
*/
public function __construct(CActiveRecord $model, CDbCriteria $criteria = null)
{
$this->_model = $model;
if ($criteria === null) {
$this->_criteria = new CDbCriteria();
} else {
$this->_criteria = clone $criteria;
}
if (empty($this->_criteria->limit) || $this->_criteria->limit <= 0) {
$this->_criteria->limit = 500;
}
// TODO dynamical evaluation
$this->_criteria->offset = null;
$this->_current_offset = 0;
/* @var $schema CDbSchema */
$schema = $this->_model->getDbConnection()->getSchema();
/* @var $md CActiveRecordMetaData */
$md = $this->_model->getMetaData();
$pk = $md->tableSchema->primaryKey;
if ($pk === null) {
throw new CException(Yii::t('orderediterator', "You cannot use this iterator over {mname} models, since they have no primary keys.", array('{mname}' => get_class($this->_model))));
}
if (is_array($pk)) {
$orders = array();
foreach ($pk as $upk) {
$orders[] = $schema->quoteColumnName($upk) . ' ASC';
}
$this->_criteria->order = implode(', ', $orders);
} else {
$this->_criteria->order = $schema->quoteColumnName($pk) . ' ASC';
}
}
示例3: __construct
/**
* Builds a new CTimedOrderedIterator object. This object will iterate over
* the given $model records found in table. The found records will be
* filtered accordingly to the params in given $criteria object. The found
* records will also be filtered by the given $dateValue that given
* $dateField is supposed to have. If no criteria is provided, only the date
* related field will be filtered. This method clones the criteria for its
* inner purposes, so the given criteria can be used for other things
* elsewhere.
*
* This iterator takes over the control of the $criteria->offset and the
* $criteria->order values. If such values are provided, they will be
* ignored for the iterations. If the $criteria->limit is provided, it will
* be used as a one-row fetch limit each time it will be needed until the
* end of the set is reached. If this is not provided, this object will try
* to find a value that is not too big and not too small to have good
* performances without exploding the memory.
*
* @param CActiveRecord $model
* @param string $dateField
* @param string|DateTime $dateValue
* @param CDbCriteria $criteria
*/
public function __construct(CActiveRecord $model, $dateField, $dateValue, CDbCriteria $criteria = null)
{
$this->_model = $model;
if ($criteria === null) {
$this->_criteria = new CDbCriteria();
} else {
$this->_criteria = clone $criteria;
}
if (empty($this->_criteria->limit) || $this->_criteria->limit <= 0) {
$this->_criteria->limit = 500;
}
// TODO dynamical evaluation
if (!is_string($dateField)) {
throw new CException(Yii::t('timedorderediterator', "The date field should be a string, {type} given.", array('{type}' => gettype($dateField) === 'object' ? get_class($dateField) : gettype($dateField))));
}
$this->_date_field = $dateField;
if (is_string($dateValue)) {
$this->_date_value = $dateValue;
} else {
if ($dateValue instanceof \DateTime) {
$this->_date_value = $dateValue->format('Y-m-d');
} else {
throw new CException(Yii::t('timedorderediterator', "The date value field should be a string or an instance of \\DateTime, {type} given.", array('{type}' => gettype($dateField) === 'object' ? get_class($dateField) : gettype($dateField))));
}
}
$this->_criteria->offset = null;
$this->_current_offset = 0;
/* @var $schema CDbSchema */
$schema = $this->_model->getDbConnection()->getSchema();
/* @var $md CActiveRecordMetaData */
$md = $this->_model->getMetaData();
$pk = $md->tableSchema->primaryKey;
if ($pk === null) {
throw new CException(Yii::t('timedorderediterator', "You cannot use this iterator over {mname} models, since they have no primary keys.", array('{mname}' => get_class($this->_model))));
}
if (is_array($pk)) {
$orders = array();
foreach ($pk as $upk) {
$orders[] = $schema->quoteColumnName($upk) . ' ASC';
}
$this->_criteria->order = implode(', ', $orders);
} else {
$this->_criteria->order = $schema->quoteColumnName($pk) . ' ASC';
}
}
示例4: __construct
/**
* Constructor.
* @param CActiveRecord $model the model instance
*/
public function __construct($model)
{
$this->_model = $model;
$tableName = $model->tableName();
if (($table = $model->getDbConnection()->getSchema()->getTable($tableName)) === null) {
throw new CDbException(Yii::t('yii', 'The table "{table}" for active record class "{class}" cannot be found in the database.', array('{class}' => get_class($model), '{table}' => $tableName)));
}
if ($table->primaryKey === null) {
$table->primaryKey = $model->primaryKey();
if (is_string($table->primaryKey) && isset($table->columns[$table->primaryKey])) {
$table->columns[$table->primaryKey]->isPrimaryKey = true;
} elseif (is_array($table->primaryKey)) {
foreach ($table->primaryKey as $name) {
if (isset($table->columns[$name])) {
$table->columns[$name]->isPrimaryKey = true;
}
}
}
}
$this->tableSchema = $table;
$this->columns = $table->columns;
foreach ($table->columns as $name => $column) {
if (!$column->isPrimaryKey && $column->defaultValue !== null) {
$this->attributeDefaults[$name] = $column->defaultValue;
}
}
foreach ($model->relations() as $name => $config) {
$this->addRelation($name, $config);
}
}