Обновление с версии 1.0 на версию 1.1

1. Изменения, связанные со сценариями модели

  • Удалён метод safeAttributes(). Теперь безопасными атрибутами являются те, для которых объявлены соответствующие правила валидации в методе rules() для конкретного сценария.

  • Изменены методы validate(), beforeValidate(), afterValidate(). Для методов setAttributes() и getSafeAttributeNames() параметр 'scenario' удалён. Получать и устанавливать сценарий модели теперь необходимо, используя свойство CModel::scenario.

  • Изменён метод getValidators() и удалён getValidatorsForAttribute(). CModel::getValidators() теперь возвращает только валидаторы, применяемые к сценарию, определяемому свойством сценария модели (CModel::scenario).

  • Изменены методы isAttributeRequired() и CModel::getValidatorsForAttribute(). Параметр сценария удалён. Вместо него следует использовать свойство сценария модели.

  • Удалено свойство CHtml::scenario. CHtml теперь использует сценарий, указанный в модели.

2. Изменения, связанные с жадной загрузкой для связей Active Record

  • По умолчанию для всех связей, включённых в жадную загрузку, будет сгенерировано и выполнено одно выражение с использованием JOIN. Если в основной таблице есть опции запроса LIMIT или OFFSET, то сначала будет выполнен этот запрос, а затем другой SQL-запрос, который возвратит все связанные объекты. Раньше, в версии 1.0.x, по умолчанию выполнялись N+1 SQL-запросов, если жадная загрузка включала N связей HAS_MANY или MANY_MANY.

3. Изменения, связанные с псевдонимами таблиц в связях Active Record

  • Теперь псевдоним по умолчанию для связанной таблицы такой же, как и соответствующее имя связи. Ранее, в версии 1.0.x, по умолчанию Yii автоматически генерировал псевдоним таблицы для каждой связанной таблицы, и мы должны были использовать префикс ??. для ссылки на этот автоматически сгенерированный псевдоним.

  • Псевдоним для главной таблицы в AR запросе теперь всегда равен t. В версии 1.0.x он соответствовал имени таблицы. Данное изменение ломает код существующих запросов AR в том случае, если в качестве псевдонима было использовано имя таблицы. Решение — заменить такие псевдонимы на 't.'.

4. Изменения, связанные с табличным (пакетным) вводом данных

  • Для имён полей использование записи вида поле[$i] отныне неверно. Теперь они должны выглядеть так — [$i]поле, чтобы была возможность поддержки множественного ввода однотипных полей (например, [$i]поле[$index]).

5. Другие изменения

  • Изменён конструктор CActiveRecord. Первый параметр (список атрибутов) удалён.

Be the first person to leave a comment

Please to leave your comment.