1.0から1.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()はモデルのシナリオプロパティによって指定されたシナリオに対応するバリデータを返します。

  • CModel::isAttributeRequired()とCModel::getValidatorsForAttribute()が変更されました。 'scenario'パラメータが削除されました。そのかわりにモデルのscenarioプロパティを使用してください。

  • CHtml::scenarioが削除されました。CHtmlはモデルのシナリオプロパティを使用します。

2. リレーショナルアクティブレコードのためのイーガーローディングに関する変更

  • デフォールトでは、イーガーローディングに関するすべてのリレーションについては単一のJOIN文が生成され、実行されます。 もしプライマリテーブルがLIMITOFFSETクエリオプションがセットされており、最初に単独で検索される。 次に他のSQL文が発行され、それに関するすべてのオブジェクトを獲得する。 以前の1.0.x版では、デフォルトの振舞いでは、もしイーガーローディングがN個のHAS_MANYまたはMANY_MANYリレーション を含む場合はN+1個のSQL文が生成される。

3. リレーショナルアクティブレコードのテーブルエイリアスに関する変更

  • リレーショナルテーブルのデフォルトのエイリアスは対応するリレーション名に変更されました。 以前の1.0.x版では、デフォルトではYiiは自動的にテーブルエイリアスを生成し、この自動的に生成されたエイリアス を参照するためにはプレフィクスとして??.を使う必要がありました。

  • ARクエリのプライマリテーブルのエイリアス名はt固定となりました。以前の1.0.xではテーブル名と同じでした。 これにより、もし既存のARクエリコードがコラムプレフィクスとしてテーブル名を使用していた場合に互換性が なくなります。その解決はプレフィクスをt.で置き換えることです。

4. 表形式入力に関する変更

  • アトリビュート名、Field[$i]のような名前は有効ではなくなりました。 それらは、配列タイプのフィールドをサポートするため(例[$i]Field[$index])、[$i]Fieldのようになりました。

5. 他の変更

  • CActiveRecordコンストラクタのシグナチュアが変更されました。最初のパラメータ(アトリビュートのリスト) は削除されました。
$Id: upgrade.txt 2305 2009-10-10 21:55:19Z qiang.xue $

Be the first person to leave a comment

Please to leave your comment.