Возникла проблема СActiveRecord при переходе на версию 1.1.4. Вот пример:
Есть модель Category для следующей таблицы:
CREATE TABLE `Category` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`categoryId` int(10) unsigned DEFAULT NULL,
`name` varchar(32) NOT NULL,
PRIMARY KEY (`id`),
KEY `categoryId` (`categoryId`),
CONSTRAINT FOREIGN KEY (`categoryId`) REFERENCES `Category` (`id`) ON DELETE CASCADE
)
Правила проверок:
public function rules()
{
return array(
array('name', 'required'),
array('id, categoryId', 'length', 'max'=>10),
array('categoryId', 'exist', 'attributeName' => 'id'),
array('name', 'length', 'max'=>32)
);
}
Тоесть, есть категории в которых могут быть категории. В случае если категория не вложена в другую категорию, то поле categoryId у нас NULL.
Раньше, если из формы при создании новой категории передаволось поле categoryId в виде пустой строки, Yii понимал что это поле в базе будет NULL (не знаю как это было реализованно), но теперь он пытается сохранить его как есть, в виде пустой строки. MySQL пустую строку преобразовывает в 0 и я получаю ошибку "Integrity constraint violation"…
Что это? Если баг, дождусь исправления… Если так и должно работать, то буду кодить проверку на пустую строку и заметять ее на NULL.