diff --git a/CHANGELOG b/CHANGELOG index 34212fcfd..cd3918ee2 100755 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,6 +3,7 @@ Version 1.1.11 work in progress ------------------------------- +- Bug #114: CUniqueValidator and CExistValidator now respect table alias while creating db query condition (klimov-paul) - Bug #145: CGettextMoFile now can parse strings with no context (eagleoneraptor) - Bug #164: CEmailValidator.checkPort now checks the port 25 of listed MX servers (DaSourcerer) - Bug #193: Changed datetime column type for postgresql from 'time' to 'timestamp' (cebe) diff --git a/framework/validators/CExistValidator.php b/framework/validators/CExistValidator.php index 83b26e0c2..daaf83c8d 100644 --- a/framework/validators/CExistValidator.php +++ b/framework/validators/CExistValidator.php @@ -75,7 +75,7 @@ class CExistValidator extends CValidator throw new CException(Yii::t('yii','Table "{table}" does not have a column named "{column}".', array('{column}'=>$attributeName,'{table}'=>$table->name))); - $criteria=array('condition'=>$column->rawName.'=:vp','params'=>array(':vp'=>$value)); + $criteria=array('condition'=>$finder->getTableAlias(true).'.'.$column->rawName.'=:vp','params'=>array(':vp'=>$value)); if($this->criteria!==array()) { $criteria=new CDbCriteria($criteria); diff --git a/framework/validators/CUniqueValidator.php b/framework/validators/CUniqueValidator.php index 730d51bc1..44498c5c8 100644 --- a/framework/validators/CUniqueValidator.php +++ b/framework/validators/CUniqueValidator.php @@ -92,7 +92,7 @@ class CUniqueValidator extends CValidator $columnName=$column->rawName; $criteria=new CDbCriteria(array( - 'condition'=>$this->caseSensitive ? "$columnName=:value" : "LOWER($columnName)=LOWER(:value)", + 'condition'=>$this->caseSensitive ? $finder->getTableAlias(true).".{$columnName}=:value" : "LOWER(".$finder->getTableAlias(true).".{$columnName})=LOWER(:value)", 'params'=>array(':value'=>$value), )); if($this->criteria!==array())