mirror of
https://github.com/yiisoft/yii2.git
synced 2025-08-26 14:26:54 +08:00
#14150: Added {{ and }} to getTablesUsedInFrom() output
This commit is contained in:
@ -792,6 +792,7 @@ class ActiveQuery extends Query implements ActiveQueryInterface
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns table names used in [[from]] indexed by aliases.
|
* Returns table names used in [[from]] indexed by aliases.
|
||||||
|
* Both aliases and names are enclosed into {{ and }}.
|
||||||
* @return string[] table names indexed by aliases
|
* @return string[] table names indexed by aliases
|
||||||
* @throws \yii\base\InvalidConfigException
|
* @throws \yii\base\InvalidConfigException
|
||||||
* @since 2.0.12
|
* @since 2.0.12
|
||||||
@ -811,18 +812,18 @@ class ActiveQuery extends Query implements ActiveQueryInterface
|
|||||||
// Clean up table names and aliases
|
// Clean up table names and aliases
|
||||||
$cleanedUpTableNames = [];
|
$cleanedUpTableNames = [];
|
||||||
foreach ($tableNames as $alias => $tableName) {
|
foreach ($tableNames as $alias => $tableName) {
|
||||||
if (preg_match('~{{(.*?)}}~', $tableName, $matches)) {
|
|
||||||
$alias = $tableName = $matches[1];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!is_string($alias)) {
|
if (!is_string($alias)) {
|
||||||
if (preg_match('~^\s*([\'"`\[].*?[\'"`\]]|\w+)(?:(?:\s+(?:as)?\s*)([\'"`\[].*?[\'"`\]]|\w+))?\s*$~iu', $tableName, $matches)) {
|
if (preg_match('~\s*({{.*?}})\s*~', $tableName, $matches)) {
|
||||||
|
$alias = $tableName = $matches[1];
|
||||||
|
} elseif (preg_match('~^\s*([\'"`\[].*?[\'"`\]]|\w+)(?:(?:\s+(?:as)?\s*)([\'"`\[].*?[\'"`\]]|\w+))?\s*$~iu', $tableName, $matches)) {
|
||||||
if (isset($matches[1])) {
|
if (isset($matches[1])) {
|
||||||
if (isset($matches[2])) {
|
if (isset($matches[2])) {
|
||||||
list(, $tableName, $alias) = $matches;
|
list(, $tableName, $alias) = $matches;
|
||||||
} else {
|
} else {
|
||||||
$tableName = $alias = $matches[1];
|
$tableName = $alias = $matches[1];
|
||||||
}
|
}
|
||||||
|
$alias = '{{' . $alias . '}}';
|
||||||
|
$tableName = '{{' . $tableName . '}}';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -223,7 +223,7 @@ class ExistValidator extends Validator
|
|||||||
$primaryTableAlias = $tableAliases[0];
|
$primaryTableAlias = $tableAliases[0];
|
||||||
$prefixedConditions = [];
|
$prefixedConditions = [];
|
||||||
foreach ($conditions as $columnName => $columnValue) {
|
foreach ($conditions as $columnName => $columnValue) {
|
||||||
$prefixedColumn = "{{{$primaryTableAlias}}}.[[{$columnName}]]";
|
$prefixedColumn = "{$primaryTableAlias}.[[{$columnName}]]";
|
||||||
$prefixedConditions[$prefixedColumn] = $columnValue;
|
$prefixedConditions[$prefixedColumn] = $columnValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -176,7 +176,7 @@ class UniqueValidator extends Validator
|
|||||||
$primaryAlias = array_keys($query->getTablesUsedInFrom())[0];
|
$primaryAlias = array_keys($query->getTablesUsedInFrom())[0];
|
||||||
$columns = $targetClass::primaryKey();
|
$columns = $targetClass::primaryKey();
|
||||||
foreach($columns as $c => $column) {
|
foreach($columns as $c => $column) {
|
||||||
$columns[$c] = "{{{$primaryAlias}}}.[[$column]]";
|
$columns[$c] = "{$primaryAlias}.[[$column]]";
|
||||||
}
|
}
|
||||||
$query->select($columns);
|
$query->select($columns);
|
||||||
}
|
}
|
||||||
@ -296,7 +296,7 @@ class UniqueValidator extends Validator
|
|||||||
$primaryTableAlias = $tableAliases[0];
|
$primaryTableAlias = $tableAliases[0];
|
||||||
$prefixedConditions = [];
|
$prefixedConditions = [];
|
||||||
foreach ($conditions as $columnName => $columnValue) {
|
foreach ($conditions as $columnName => $columnValue) {
|
||||||
$prefixedColumn = "{{{$primaryTableAlias}}}.[[{$columnName}]]";
|
$prefixedColumn = "{$primaryTableAlias}.[[{$columnName}]]";
|
||||||
$prefixedConditions[$prefixedColumn] = $columnValue;
|
$prefixedConditions[$prefixedColumn] = $columnValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -239,7 +239,7 @@ abstract class ActiveQueryTest extends DatabaseTestCase
|
|||||||
$tables = $query->getTablesUsedInFrom();
|
$tables = $query->getTablesUsedInFrom();
|
||||||
|
|
||||||
$this->assertEquals([
|
$this->assertEquals([
|
||||||
Profile::tableName() => Profile::tableName(),
|
'{{' . Profile::tableName() . '}}' => '{{' . Profile::tableName() . '}}',
|
||||||
], $tables);
|
], $tables);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -247,17 +247,17 @@ abstract class ActiveQueryTest extends DatabaseTestCase
|
|||||||
{
|
{
|
||||||
$query = new ActiveQuery(null);
|
$query = new ActiveQuery(null);
|
||||||
$query->from = [
|
$query->from = [
|
||||||
'prf' => 'profile',
|
'{{prf}}' => '{{profile}}',
|
||||||
'usr' => 'user',
|
'{{usr}}' => '{{user}}',
|
||||||
'a b' => 'c d',
|
'{{a b}}' => '{{c d}}',
|
||||||
];
|
];
|
||||||
|
|
||||||
$tables = $query->getTablesUsedInFrom();
|
$tables = $query->getTablesUsedInFrom();
|
||||||
|
|
||||||
$this->assertEquals([
|
$this->assertEquals([
|
||||||
'prf' => 'profile',
|
'{{prf}}' => '{{profile}}',
|
||||||
'usr' => 'user',
|
'{{usr}}' => '{{user}}',
|
||||||
'a b' => 'c d',
|
'{{a b}}' => '{{c d}}',
|
||||||
], $tables);
|
], $tables);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -269,11 +269,11 @@ abstract class ActiveQueryTest extends DatabaseTestCase
|
|||||||
$tables = $query->getTablesUsedInFrom();
|
$tables = $query->getTablesUsedInFrom();
|
||||||
|
|
||||||
$this->assertEquals([
|
$this->assertEquals([
|
||||||
'prf' => 'profile',
|
'{{prf}}' => '{{profile}}',
|
||||||
'usr' => 'user',
|
'{{usr}}' => '{{user}}',
|
||||||
'order' => 'order',
|
'{{order}}' => '{{order}}',
|
||||||
'customer' => 'customer',
|
'{{customer}}' => '{{customer}}',
|
||||||
'c d' => 'a b',
|
'{{c d}}' => '{{a b}}',
|
||||||
], $tables);
|
], $tables);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -294,7 +294,7 @@ abstract class ActiveQueryTest extends DatabaseTestCase
|
|||||||
$tables = $query->getTablesUsedInFrom();
|
$tables = $query->getTablesUsedInFrom();
|
||||||
|
|
||||||
$this->assertEquals([
|
$this->assertEquals([
|
||||||
Profile::tableName() => Profile::tableName(),
|
'{{' . Profile::tableName() . '}}' => '{{' . Profile::tableName() . '}}',
|
||||||
], $tables);
|
], $tables);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -302,17 +302,17 @@ abstract class ActiveQueryTest extends DatabaseTestCase
|
|||||||
{
|
{
|
||||||
$query = new ActiveQuery(null);
|
$query = new ActiveQuery(null);
|
||||||
$query->from = [
|
$query->from = [
|
||||||
'prf' => 'profile',
|
'{{prf}}' => '{{profile}}',
|
||||||
'usr' => 'user',
|
'{{usr}}' => '{{user}}',
|
||||||
'a b' => 'c d',
|
'{{a b}}' => '{{c d}}',
|
||||||
];
|
];
|
||||||
|
|
||||||
$tables = $query->getTablesUsedInFrom();
|
$tables = $query->getTablesUsedInFrom();
|
||||||
|
|
||||||
$this->assertEquals([
|
$this->assertEquals([
|
||||||
'prf' => 'profile',
|
'{{prf}}' => '{{profile}}',
|
||||||
'usr' => 'user',
|
'{{usr}}' => '{{user}}',
|
||||||
'a b' => 'c d',
|
'{{a b}}' => '{{c d}}',
|
||||||
], $tables);
|
], $tables);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -324,11 +324,11 @@ abstract class ActiveQueryTest extends DatabaseTestCase
|
|||||||
$tables = $query->getTablesUsedInFrom();
|
$tables = $query->getTablesUsedInFrom();
|
||||||
|
|
||||||
$this->assertEquals([
|
$this->assertEquals([
|
||||||
'prf' => 'profile',
|
'{{prf}}' => '{{profile}}',
|
||||||
'usr' => 'user',
|
'{{usr}}' => '{{user}}',
|
||||||
'srv' => 'service',
|
'{{srv}}' => '{{service}}',
|
||||||
'order' => 'order',
|
'{{order}}' => '{{order}}',
|
||||||
'c d' => 'a b',
|
'{{c d}}' => '{{a b}}',
|
||||||
], $tables);
|
], $tables);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -353,7 +353,7 @@ abstract class ActiveQueryTest extends DatabaseTestCase
|
|||||||
$tables = $query->getTablesUsedInFrom();
|
$tables = $query->getTablesUsedInFrom();
|
||||||
|
|
||||||
$this->assertEquals([
|
$this->assertEquals([
|
||||||
'%order_item' => '%order_item',
|
'{{%order_item}}' => '{{%order_item}}',
|
||||||
], $tables);
|
], $tables);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user