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