Обновление с версии 1.0 на версию 1.1
Изменения, связанные со сценариями модели
Удалён метод safeAttributes(). Теперь безопасными атрибутами являются те, для которых объявлены соответствующие правила валидации в методе rules() для конкретного сценария.
Изменены методы validate(), beforeValidate(), afterValidate(). Для методов setAttributes() и getSafeAttributeNames() параметр 'scenario' удалён. Получать и устанавливать сценарий модели теперь необходимо, используя свойство CModel::scenario.
Изменён метод getValidators() и удалён getValidatorsForAttribute(). CModel::getValidators() теперь возвращает только валидаторы, применяемые к сценарию, определяемому свойством сценария модели (CModel::scenario).
Изменены методы 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. Первый параметр (список атрибутов) удалён.