手册里有一句话很关键:
自动完成是ThinkPHP提供用来完成数据自动处理和过滤的方法,使用create方法创建数据对象的时候会自动完成数据处理。
这句话说明自动完成发生的时间是create()组建数据的时候,而不是add和save的时候。 相对应的Model里面$_auto 里的完成时间(如下)表示的也是create()组建数据的时候,create()第二个参数即是表示的这个完成时间。当create()不加参数的时候默认时间为1,即新增数据时;当第二个参数为2时即表示为更新数据时,不需要第一个参数时第一个参数传空,即create(‘‘,2); 但是这个功能似乎只是为了告诉作者是新增还是更新,并不是强制性的(至少现在还没发现它有什么实质性的功能),比如我想更新数据是自动设置一个字段的值,但是我create()的时候不传参数,然后$_auto里完成时间设置为self::MODEL_INSERT,然后$model->field(‘指定更新的字段‘)->where(‘更新的条件,注意如果没有任何更新条件,save并不会更新数据库‘)->save(), 这样照样可以完成这个字段的更新,当然create(‘‘,2), $_auto里设置self::MODEL_UPDATE也行。
P.S. Thinkphp里读取数据库后的字段全变为小写了,读取后用的时候也要全变小写,但是插入更新的时候还是按照数据库中的大小写
完成时间(可选)
设置自动完成的时间,包括:
设置 | 说明 |
---|---|
self::MODEL_INSERT或者1 | 新增数据的时候处理(默认) |
self::MODEL_UPDATE或者2 | 更新数据的时候处理 |
self::MODEL_BOTH或者3 | 所有情况都进行处理 |
时间: 2024-10-25 15:54:16