/** * 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 testSelectStatementWithTablesAndJoins() { $table1 = new TableExpression('table1', 't1'); $table2 = new TableExpression('table2_with_long_name', 'table2'); $joinCondition = new SimpleCondition(new FieldExpression('id', $table1), new FieldExpression('id_t1', $table2), '='); $table1->addJoin(new JoinExpression(JoinExpression::TYPE_INNER, $table2, $joinCondition)); $statement = new SelectStatement(); $statement->addField(new FieldExpression('field1', $table1, 'f1')); $statement->addTable($table1); $sql = $this->parser->parseStatement($statement); $this->assertNotNull($sql); $this->assertEquals('SELECT `t1`.`field1` AS `f1` FROM `table1` AS `t1` INNER JOIN `table2_with_long_name` AS `table2` ON `t1`.`id` = `table2`.`id_t1`', $sql); }
public function testConstructWithAlias() { $table = new TableExpression('table', 'alias'); $this->assertEquals('table', $table->getName()); $this->assertEquals('alias', $table->getAlias()); }
/** * Create the SQL of the joins of a table for a FROM expression * @param zibo\library\database\manipulation\expression\TableExpression $table * @return string SQL representation of the joins */ protected function parseTableExpressionJoins(TableExpression $table) { $sql = ''; $joins = $table->getJoins(); if (!$joins) { return $sql; } foreach ($joins as $join) { $sql .= ' ' . $join->getType() . ' JOIN ' . $this->parseTableExpressionForFrom($join->getTable()) . ' ON ' . $this->parseCondition($join->getCondition(), false); } return $sql; }
/** * 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; }