/** * Adds a table to the statement * @param zibo\library\database\manipulation\expression\TableExpression $table * @return null; */ public function addTable(TableExpression $table) { $alias = $table->getAlias(); if ($alias) { $this->tables[$alias] = $table; } else { $this->tables[$table->getName()] = $table; } }
public function testConstructWithAlias() { $table = new TableExpression('table', 'alias'); $this->assertEquals('table', $table->getName()); $this->assertEquals('alias', $table->getAlias()); }
/** * Create the SQL of the given table for a FROM expression * @param zibo\library\database\manipulation\expression\TableExpression $table * @return string SQL representation of the table */ protected function parseTableExpressionForFrom(TableExpression $table) { $tableName = $this->connection->quoteIdentifier($table->getName()); $tableAlias = $table->getAlias(); if ($tableAlias != null) { $tableName .= ' AS ' . $this->connection->quoteIdentifier($tableAlias); } return $tableName; }
/** * Create a condition to localize a model * @param zibo\library\database\manipulation\expression\TableExpression $table Table expression of the table with the shared data * @param zibo\library\database\manipulation\expression\TableExpression $localizedTable Table expression of the table with the localized data * @return zibo\library\database\manipulation\condition\NestedCondition Condition to localize the provided table */ private function createLocalizeCondition(TableExpression $table, TableExpression $localizedTable) { $expressionPrimaryKey = new FieldExpression(ModelTable::PRIMARY_KEY, $table, $table->getAlias() . self::ALIAS_SEPARATOR . ModelTable::PRIMARY_KEY); $expressionData = new FieldExpression(LocalizedModel::FIELD_DATA, $localizedTable, $localizedTable->getAlias() . self::ALIAS_SEPARATOR . LocalizedModel::FIELD_DATA); $expressionLocaleField = new FieldExpression(LocalizedModel::FIELD_LOCALE, $localizedTable, $localizedTable->getAlias() . self::ALIAS_SEPARATOR . LocalizedModel::FIELD_LOCALE); $expressionLocale = new ScalarExpression($this->locale); $dataCondition = new SimpleCondition($expressionPrimaryKey, $expressionData, Condition::OPERATOR_EQUALS); $localeCondition = new SimpleCondition($expressionLocaleField, $expressionLocale, Condition::OPERATOR_EQUALS); $localizeCondition = new NestedCondition(); $localizeCondition->addCondition($dataCondition); $localizeCondition->addCondition($localeCondition); return $localizeCondition; }