Yii 1.1.12: ユーザーモデルのインスタンスを選択すると、特定のプロパティ/列のデフォルト値が取得されます。これは、最近(手動で)データベースに追加した列で発生します。
$user->locale // returns null (= default value)
データベースに(phpMyAdminを介して)新しい異なるデフォルト値を設定すると、その新しいデフォルト値を受け取ります。
そのテーブルの他の列は問題なく機能します。
$user->email // returns the correct value
SQLクエリを実行すると、正しい値を受け取ります。
SELECT locale FROM tbl_users WHERE tbl_users.id = :userID LIMIT 1
このことから、データベースは問題ないと推測できます。問題はActiveRecordsの実装にあるはずです。
Yiiの魔法のメソッドは、各データベース列を見つけて、それらを(仮想)プロパティとしてモデルに追加するだけだと思います。これは発生しているように見えますが、どういうわけかデータベース列のデフォルト値が挿入されています。
私は何が間違っているのですか?
解決策: Samが提案したように、 defaultScope()を削除するとうまくいきました。どうやら、ARプロパティは、認識されるためにdefaultScope()にリストされている必要があります。または、defaultScope()を完全に削除することもできます。