private function _createSqlFromCriterion(Criterion $aCriterion) { //var_dump( $aCriterion ); //$this->_hidden_criterion->getTable() // echo $aCriterion->getColumn(); // echo $aCriterion->getValue(); // echo $aCriterion->getComparison(); // var_dump( $aCriterion->getAllTables() ); // var_dump( $aCriterion->getAttachedCriterion() ); // var_dump( $aCriterion->getTable() ); $table = $aCriterion->getTable() ? $aCriterion->getTable() . '.' : ''; $value = $aCriterion->getValue(); if (is_array($value)) { foreach ($value as $key => $val) { $value[$key] = "'" . chks($val) . "'"; } if (count($value)) { $value = '(' . implode(',', $value) . ')'; } else { $value = '( NULL )'; } } else { if (!is_null($value) && !is_numeric($value)) { $value = "'" . chks($value) . "'"; } } if (is_null($value)) { if (self::EQUAL == $aCriterion->getComparison() || self::ISNULL == $aCriterion->getComparison() || self::IN == $aCriterion->getComparison()) { $partWhere = trim($table . $aCriterion->getColumn(), '.') . " IS NULL"; } else { $partWhere = trim($table . $aCriterion->getColumn(), '.') . " IS NOT NULL"; } } else { $partWhere = trim($table . $aCriterion->getColumn(), '.') . $aCriterion->getComparison() . $value; } $clauses = $aCriterion->getClauses(); if (is_array($clauses) && count($clauses)) { $conjunctions = $aCriterion->getConjunctions(); for ($i = 0; $i < count($clauses); $i++) { $partWhere = '(' . $partWhere . ')' . $conjunctions[$i] . $this->_createSqlFromCriterion($clauses[$i]); } } return $partWhere; }