Example #1
0
 private function internalExistColumn($column, $fqcn = true)
 {
     $col = $this->sanitzeSelectColumn($column);
     if ($col['table_alias']) {
         if ($col['table_alias'] == $this->table_alias && $this->dbTable->existColumn($col['name'])) {
             return $this->fqcn($col['table_alias'], $col['name'], $fqcn);
         }
         // si on a des jointures
         if ($this->join && array_key_exists($col['table_alias'], $this->tableJoin)) {
             if ($type = $this->tableJoin[$col['table_alias']]['table']->existColumn($col['name'])) {
                 return $this->fqcn($col['table_alias'], $col['name'], $fqcn);
             }
         }
     } else {
         if ($this->dbTable->existColumn($col['name'])) {
             $alias = $this->table_alias ? $this->table_alias : $this->dbTable->table;
             return $this->fqcn($alias, $col['name'], $fqcn);
         }
     }
     // si l'alias correspond au nom réel de la table
     if ($col['table_alias'] == $this->dbTable->table && $this->dbTable->existColumn($col['name'])) {
         return $this->fqcn($col['table_alias'], $col['name'], $fqcn);
     } else {
         // déclaré par selectFunction as column || pour order By + group
         foreach ($this->selectFunction as $v) {
             if (preg_match('#as[\\s]+' . $col['name'] . '[\\s,]{0,1}#i', $v)) {
                 return $col['name'];
             }
         }
         // peut poser problème si le nom de colonne est ambigu
         // la première correspondance est retournée
         // si on a des jointures
         if ($this->join) {
             foreach ($this->tableJoin as $t) {
                 if ($t['table']->existColumn($col['name'])) {
                     return $this->fqcn($t['alias'], $col['name'], $fqcn);
                 }
             }
         }
     }
 }