/** * Create a new instance. * * @param Criteria $parent The outer class (this is an "inner" class). * @param ColumnMap $column A Column object to help escaping the value * @param mixed $value * @param string $comparison, among ModelCriteria::MODEL_CLAUSE * @param string $clause A simple pseudo-SQL clause, e.g. 'foo.BAR LIKE ?' */ public function __construct(Criteria $outer, $column, $value = null, $comparison = ModelCriteria::MODEL_CLAUSE, $clause, $type = null) { $this->value = $value; if ($column instanceof ColumnMap) { $this->column = $column->getName(); $this->table = $column->getTable()->getName(); } else { $dotPos = strrpos($column, '.'); if ($dotPos === false) { // no dot => aliased column $this->table = null; $this->column = $column; } else { $this->table = substr($column, 0, $dotPos); $this->column = substr($column, $dotPos + 1, strlen($column)); } } $this->comparison = $comparison === null ? Criteria::EQUAL : $comparison; $this->clause = $clause; $this->type = $type; $this->init($outer); }
/** * @param ColumnMap $columnMap * @return bool */ protected function isColumnBehavior(ColumnMap $columnMap) { foreach ($columnMap->getTable()->getBehaviors() as $name => $params) { $columnName = Base::toLower($columnMap->getName()); switch ($name) { case 'nested_set': $columnNames = array($params['left_column'], $params['right_column'], $params['level_column']); if (in_array($columnName, $columnNames)) { return true; } break; case 'timestampable': $columnNames = array($params['create_column'], $params['update_column']); if (in_array($columnName, $columnNames)) { return true; } break; } } return false; }