バージョン 1.0 から 1.1 へのアップグレード
モデルシナリオに関する変更
CModel::safeAttributes()が削除されました。セーフなアトリビュート(安全な属性)とは、個別のシナリオのために CModel::rules() で定義されたルールによって検証されたもの、という定義に変更されました。
CModel::validate(), CModel::beforeValidate(), CModel::afterValidate() が変更されました。 CModel::setAttributes(), CModel::getSafeAttributeNames() が変更され、'scenario' パラメータが削除されました。シナリオを得たり設定したりするには CModel::scenario を使用してください。
CModel::getValidators() が変更され、CModel::getValidatorsForAttribute() が削除されました。 CModel::getValidators() はモデルの scenario プロパティによって指定されたシナリオに対応するバリデータだけを返します。
CModel::isAttributeRequired() と CModel::getValidatorsForAttribute() が変更されました。 'scenario' パラメータが削除されました。そのかわりにモデルの scenario プロパティを使用してください。
CHtml::scenario が削除されました。CHtml はモデルのシナリオプロパティを使用します。
リレーショナルアクティブレコードのためのイーガーローディングに関する変更
- デフォルトでは、イーガーローディングされる全てのリレーションについて、単一の JOIN 文が生成され、実行されます。
プライマリテーブルに
LIMIT
やOFFSET
クエリオプションがセットされている場合は、最初にプライマリテーブルだけが単独で検索され、その後で、関連する全てのオブジェクトを取得するために、もう一つの SQL 文が発行されます。 以前のバージョン 1.0.x では、デフォルトの振舞いは、イーガーローディングがN
個のHAS_MANY
またはMANY_MANY
リレーションを含む場合は、N+1
個の SQL 文が生成されていました。
リレーショナルアクティブレコードのテーブルエイリアスに関する変更
リレーショナルテーブルのデフォルトのエイリアスは、対応するリレーション名と同じものに変更されました。 以前のバージョン 1.0.x では、デフォルトでは Yii は自動的にテーブルエイリアスを生成し、この自動生成されたエイリアスを参照するためにプレフィクスとして
??.
を使う必要がありました。AR クエリにおけるプライマリテーブルのエイリアス名は
t
固定となりました。 以前のバージョン 1.0.x ではテーブル名と同じでした。 これにより、もし既存の AR クエリコードがコラムプレフィクスとしてテーブル名を使用していた場合に互換性がなくなります。その解決はプレフィクスをt.
で置き換えることです。
表形式入力に関する変更
- 属性の名前としては、
Field[$i]
という表記は有効ではなくなりました。[$i]Field
のように表記しなければなりません。 これは、配列タイプのフィールド (例えば[$i]Field[$index]
) をサポートするためです。
その他の変更
- CActiveRecord コンストラクタのシグナチュアが変更されました。 最初のパラメータ(属性のリスト)は削除されました。