Yii 1.1.12: 当我选择User模型的实例时,我会获得某些属性/列的默认值。对于我最近(手动)添加到数据库的列,会发生这种情况:
$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
从中我推断出数据库很好。问题必须出在Active Records实施中。
我希望Yii的魔术方法只需找到每个数据库列,并将它们作为(虚拟)属性添加到模型中。这似乎正在发生,但不知何故,数据库列默认值被插入。
我做错了什么?
解决方案:正如Sam建议的那样,删除 defaultScope()就可以了。显然,AR属性必须列在 defaultScope()中才能被识别。或者,可以完整地删除 defaultScope()。
答案 0 :(得分:1)
在向MySQL添加默认值后,您是否清理过Yii缓存?