コード例 #1
0
 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
 }
コード例 #2
0
 /**
  * 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;
 }