手册里有一句话很关键:
自动完成是ThinkPHP提供用来完成数据自动处理和过滤的方法,使用create方法创建数据对象的时候会自动完成数据处理。
这句话说明自动完成发生的时间是create()组建数据的时候,而不是add和save的时候。 相对应的Model里面$_auto 里的完成时间(如下)表示的也是create()组建数据的时候,create()第二个参数即是表示的这个完成时间。当第二个参数为2时即表示为更新数据时,不需要第一个参数时第一个参数传空,即create('',2); create()第二个参数的默认值和次自动完成字段在数据库中是否有值有关,当有值时,create()第二个参数默认为2,无值默认为1。不过可以强制赋给第二个参数值来指定是更新还是插入
P.S. Thinkphp里读取数据库后的字段全变为小写了,读取后用的时候也要全变小写,但是插入更新的时候还是按照数据库中的大小写
完成时间(可选)
设置自动完成的时间,包括:
设置 | 说明 |
---|---|
self::MODEL_INSERT或者1 | 新增数据的时候处理(默认) |
self::MODEL_UPDATE或者2 | 更新数据的时候处理 |
self::MODEL_BOTH或者3 | 所有情况都进行处理 |