svn2343 生成 model 的问题

news 表中有 created_at int 11 的字段。之前生成的 rule 为 array(‘created_at’, ‘numerical’, ‘integerOnly’ => true), 而现在不会生成类似的 rule ,而是 array(‘created_at’, ‘length’, ‘max’ => 11),同时 search 函数中的搜索代码为 $criteria->compare(‘created_at’,$this->created_at, true); 了,之前默认是为 false的。

貌似为 true 的话代表的是 like 操作吧。而对于整形的字段来说,应该是不需要 like 操作的吧。

前几个 svn 版本都有类似的问题。

qiang,帮看看是不是有这个问题?

你用的是什么数据库?

MySQL 5.1

Windows 平台

应该不会啊。你运行一下show create table TableName或者desc TableName看看结果是什么?

运行 show create table www_members 结构如下:

CREATE TABLE www_members (

id int(11) unsigned NOT NULL AUTO_INCREMENT,

username varchar(20) NOT NULL COMMENT ‘登录帐号’,

password varchar(32) NOT NULL COMMENT ‘登录密码’,

salt varchar(32) NOT NULL COMMENT ‘Salt’,

email varchar(30) NOT NULL COMMENT ‘电子邮箱’,

nickname varchar(30) NOT NULL COMMENT ‘别名’,

type tinyint(1) unsigned NOT NULL DEFAULT ‘1’ COMMENT ‘类型’,

avatar_saved_path varchar(30) DEFAULT NULL COMMENT ‘头像’,

registed_at int(11) unsigned NOT NULL COMMENT ‘注册时间’,

registed_ip varchar(15) NOT NULL COMMENT ‘注册 IP’,

is_active tinyint(1) unsigned NOT NULL DEFAULT ‘1’ COMMENT ‘激活’,

last_login_time int(11) unsigned DEFAULT NULL COMMENT ‘最后一次登陆时间’,

last_login_ip varchar(15) DEFAULT NULL COMMENT ‘最后一次登陆IP’,

login_count int(11) unsigned NOT NULL DEFAULT ‘0’ COMMENT ‘登陆次数’,

created_at int(11) unsigned NOT NULL COMMENT ‘添加时间’,

updated_at int(11) unsigned NOT NULL COMMENT ‘更新时间’,

PRIMARY KEY (id)

) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT=‘Members’

这样是正确的,但是生成的 rule 就是有点问题。

你的id是unsigned int。用PHP的整数类型可能会丧失精度,所以yii把它解析为string了。你自己可以手工修改rule,不要完全依赖自动生成的。

之前貌似不是这样啊。后来改动的?

是的。