Оновлення з версії 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]. Перший параметр (список атрибутів) прибраний.