function _testQueryBuilderAlias() { // get alias generator $this->assertTrue($am = new epQueryAliasManager()); // check alias generation for classes $class = "TestClass"; $this->assertTrue($alias1 = $am->getClassAlias($class, true)); // true: create $this->assertTrue($alias2 = $am->getClassAlias($class, true)); // true: create $this->assertFalse($alias1 == $alias2); // unique aliases $this->assertTrue($class == $am->getClass($alias1)); $this->assertTrue($class == $am->getClass($alias2)); $this->assertTrue(2 == count($am->getClassAliases($class))); // check alias generation for tables $table = "TestTable"; $this->assertTrue($alias3 = $am->getTableAlias($table, true)); // true: create $this->assertTrue($alias4 = $am->getTableAlias($table, true)); // true: create $this->assertFalse($alias3 == $alias4); // unique aliases $this->assertTrue($table == $am->getTable($alias3)); $this->assertTrue($table == $am->getTable($alias4)); $this->assertTrue(2 == count($am->getTableAliases($table))); // alias uniqueness $this->assertFalse($alias1 == $alias3); // unique aliases $this->assertFalse($alias1 == $alias4); // unique aliases $this->assertFalse($alias2 == $alias3); // unique aliases $this->assertFalse($alias2 == $alias4); // unique aliases }
/** * Quotes primitive value with its primitve variable (alias.var) * @param mixed $v * @param string $pvar * @return true|string (error message if string) */ public function quoteVar(&$v, &$pvar) { // unquote pvar $pvar_ = $this->_unquote($pvar); // split primitive var to alias and var list($alias, $var) = @explode('.', $pvar_); if (!$alias || !$var) { return "invalid primitive var '{$pvar}'"; } // get the class for alias if (!($class = $this->am->getClass($alias))) { return "no class found for alias '{$alias}'"; } // get class map if (!($cm = $this->proot->getClassMap($class))) { return "no class map for '{$class}'"; } // is var 'oid'? if ($var == 'oid') { // replace var name with column name $pvar = $this->quoteId($alias) . '.' . $this->quoteId($cm->getOidColumn()); return true; } // get field map (for non-oid field) if (!($fm = $cm->getField($var))) { return "no field map for '{$class}::{$var}'"; } // replace var name with column name $pvar = $this->quoteId($alias) . '.' . $this->quoteId($fm->getColumnName()); // quote value $v = $this->quote($v, $fm); return true; }