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); } } } } }