0

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()を完全に削除することもできます。

4

1 に答える 1

1

デフォルト値を MySQL に追加した後、Yii キャッシュをクリーンアップしましたか?

于 2012-11-26T18:21:51.750 に答える