# 自动完成 > 该部分知识请参考thinkphp官方教程:http://www.kancloud.cn/manual/thinkphp5/138668 在实际开发过程中,我们往往需要自动记录一些时间节点。比如在这里,我们需要记录每个用户的创建时间。 > timestamp 时间戳的出现,用于解决日期比较、各时区时间不同等的时间问题,它是指相对于1970年1月1日0点0分0秒的秒数。 解决方法:我们可以在form表单中增加一个字段,或是在action中,手动写一个字段。当然了,我们还可以使用时间戳的自动完成功能。 在thinkphp中,我们将创建时间字段规定为create_time,更新时间规定为update_time,虽然我们也可以自定义,但除非该字段与其它我们想定义的字段产生冲突,否则我们不会那样做。 ## 方法一:form表单 `文件路径为:index/view/Teacher/add.html` ~~~ <label>邮箱:</label> <input type="email" name="email" /> <input type="hidden" name="create_time" value="{:time()}" /> <button type="submit">保存</button> ~~~ ~~~ <?php namespace app\index\controller; ... class TeacherController extends Controller { ... public function insert() { // 接收传入数据 $postData = $this->request->post(); // 实例化Teacher空对象 $Teacher = new Teacher(); // 为对象赋值 $Teacher->name = $postData['name']; $Teacher->username = $postData['username']; $Teacher->sex = $postData['sex']; $Teacher->email = $postData['email']; $Teacher->create_time = $postData['create_time']; // 新增对象至数据表 $Teacher->save(); // 反馈结果 return '新增成功。新增ID为:' . $Teacher->id; } ... } ~~~ > time()请参考: http://php.net/manual/zh/function.time.php 测试结果如下图所示: **注意:一定要先刷新新增页面,新增信息后,点击保存进行测试,因为后退并没有改变HTML代码。** ![](https://box.kancloud.cn/2016-06-14_575fa8bed72e8.png) ![](https://box.kancloud.cn/2016-06-14_575fa8bef012a.png) ![](https://box.kancloud.cn/2016-06-14_575fa8bf14391.png) ![](https://box.kancloud.cn/2016-06-14_575fa8bf3073a.png) 如果出了问题,那么我们需要从数据流上找问题。 1. form表单是否进行了正确的传值? 2. insert action是否正确的接收到了值? 3. 传入的字段,是否与数据表字段相对应? ## 方法二:控制器中action 我们首先将V层文件add.html中的form表单进行恢复,去除create_time字段<input type="hidden" name="create_time" value="{:time()}" />。 然后如下改写C层: ~~~ ... namespace app\index\controller; ... // 为对象赋值 $Teacher->name = $postData['name']; $Teacher->username = $postData['username']; $Teacher->sex = $postData['sex']; $Teacher->email = $postData['email']; $Teacher->create_time = time(); ... ~~~ 测试结果如下: **再提示一遍,修改V层后,需要刷新当前页面。** ![](https://box.kancloud.cn/2016-06-14_575fa8bf4e1f1.png) ![](https://box.kancloud.cn/2016-06-14_575fa8bf63bdd.png) ![](https://box.kancloud.cn/2016-06-14_575fa8bf7b01a.png) ## 方法三 使用自动时间戳 我们恢复C层,**去除** 刚刚加入的那行代码`$Teacher->create_time = time();`。 然后application根目录下的找到database.php,修改auto_timestamp项为true ~~~ // 是否自动写入时间戳字段 'auto_timestamp' => true, ~~~ 然后再测试,查看测试结果: **重要的事情说三遍,先刷新!** ![](https://box.kancloud.cn/2016-06-14_575fa8bfcd99d.png) ![](https://box.kancloud.cn/2016-06-14_575fa8bfe19a4.png) ![](https://box.kancloud.cn/2016-06-14_575fa8c0036d5.png) ![](https://box.kancloud.cn/e3f14c0ef754f411d7ebfc166b873969_600x182.png) 这样做有什么好处呢? 其实很明显了,我们现在只是处理一个form,一个insert。如果不使用自动加入时间戳的功能的话,我们每写一个这样的小功能,都需要加一行加入时间的代码。而使用这个功能后,我们只需要配置好database.php就可以了。 ~~~ git checkout -f step3.3.4 ~~~ 执行上述命令后,上述示例代码信息如下: ![](https://box.kancloud.cn/025e7b6abfa643444d0e3093ef28a4f9_921x440.png)