public function testGetOperatorByType() { $this->assertEquals('>', SQLOperatorUtil::getOperatorByType('greaterThan')); $this->assertEquals('not like', SQLOperatorUtil::getOperatorByType('doesNotStartsWith')); $this->assertEquals('not like', SQLOperatorUtil::getOperatorByType('doesNotEndsWith')); $this->assertEquals('not like', SQLOperatorUtil::getOperatorByType('doesNotContains')); }
protected function addReadOptimizationWhereClause(&$where, $whereKey, $tableAliasName) { assert('is_array($where)'); assert('is_int($whereKey)'); assert('is_string($tableAliasName)'); $q = DatabaseCompatibilityUtil::getQuote(); $columnWithTableAlias = self::makeColumnNameWithTableAlias($tableAliasName, $this->modelAttributeToDataProviderAdapter->getColumnName()); $mungeTableName = ReadPermissionsOptimizationUtil::getMungeTableName($this->modelAttributeToDataProviderAdapter->getModelClassName()); $mungeIds = ReadPermissionsOptimizationUtil::getMungeIdsByUser(Yii::app()->user->userModel); $whereContent = $columnWithTableAlias . " " . SQLOperatorUtil::getOperatorByType('equals') . " "; $whereContent .= "(select securableitem_id from {$q}{$mungeTableName}{$q} " . "where {$q}securableitem_id{$q} = {$columnWithTableAlias} and {$q}munge_id{$q}" . " in ('" . join("', '", $mungeIds) . "') limit 1)"; $where[$whereKey] = $whereContent; }
public function testGetOperatorByType() { $this->assertEquals('>', SQLOperatorUtil::getOperatorByType('greaterThan')); }
public static function resolveToLowerForStringComparison($operatorType, $value) { assert('is_string($operatorType)'); assert('is_string($value)'); if (RedBeanDatabase::getDatabaseType() != 'mysql') { //todo: for pgsql, need to use lower or ILIKE to make sure evaluation is not case sensitive throw new NotSupportedException(); } return SQLOperatorUtil::getOperatorByType($operatorType) . " '" . SQLOperatorUtil::resolveValueLeftSideLikePartByOperatorType($operatorType) . $value . SQLOperatorUtil::resolveValueRightSideLikePartByOperatorType($operatorType) . "'"; }