Обновление с версии 1.0 на версию 1.1 ===================================== Изменения, связанные со сценариями модели ----------------------------------------- - Удалён метод [safeAttributes()|CModel::safeAttributes]. Теперь безопасными атрибутами являются те, для которых объявлены соответствующие правила валидации в методе [rules()|CModel::rules] для конкретного сценария. - Изменены методы [validate()|CModel::validate], [beforeValidate()|CModel::beforeValidate], [afterValidate()|CModel::afterValidate]. Для методов [setAttributes()|CModel::setAttributes] и [getSafeAttributeNames()|CModel::getSafeAttributeNames] параметр 'scenario' удалён. Получать и устанавливать сценарий модели теперь необходимо, используя свойство [CModel::scenario]. - Изменён метод [getValidators()|CModel::getValidators] и удалён [getValidatorsForAttribute()|CModel::getValidatorsForAttribute]. CModel::getValidators() теперь возвращает только валидаторы, применяемые к сценарию, определяемому свойством сценария модели ([CModel::scenario]). - Изменены методы [isAttributeRequired()|CModel::isAttributeRequired] и [CModel::getValidatorsForAttribute()]. Параметр сценария удалён. Вместо него следует использовать свойство сценария модели. - Удалено свойство CHtml::scenario. CHtml теперь использует сценарий, указанный в модели. Изменения, связанные с жадной загрузкой для связей Active Record ------------------------------------------------------------------ - По умолчанию для всех связей, включённых в жадную загрузку, будет сгенерировано и выполнено одно выражение с использованием JOIN. Если в основной таблице есть опции запроса `LIMIT` или `OFFSET`, то сначала будет выполнен этот запрос, а затем другой SQL-запрос, который возвратит все связанные объекты. Раньше, в версии 1.0.x, по умолчанию выполнялись `N+1` SQL-запросов, если жадная загрузка включала `N` связей `HAS_MANY` или `MANY_MANY`. Изменения, связанные с псевдонимами таблиц в связях Active Record ----------------------------------------------------------------- - Теперь псевдоним по умолчанию для связанной таблицы такой же, как и соответствующее имя связи. Ранее, в версии 1.0.x, по умолчанию Yii автоматически генерировал псевдоним таблицы для каждой связанной таблицы, и мы должны были использовать префикс `??.` для ссылки на этот автоматически сгенерированный псевдоним. - Псевдоним для главной таблицы в AR запросе теперь всегда равен `t`. В версии 1.0.x он соответствовал имени таблицы. Данное изменение ломает код существующих запросов AR в том случае, если в качестве псевдонима было использовано имя таблицы. Решение — заменить такие псевдонимы на 't.'. Изменения, связанные с табличным (пакетным) вводом данных --------------------------------------------------------- - Для имён полей использование записи вида `поле[$i]` отныне неверно. Теперь они должны выглядеть так — `[$i]поле`, чтобы была возможность поддержки множественного ввода однотипных полей (например, `[$i]поле[$index]`). Другие изменения ---------------- - Изменён конструктор [CActiveRecord]. Первый параметр (список атрибутов) удалён.