$this->where( "a_id=".$this->aid )->setField( "a_lastedit" => "now()" );但是这样做的话按照TP的机制似乎最后做成的SQL语句应该是update article set a_lastedit = 'now()' where a_id = xxx;这里的now()两边会多出一对引号,应该不能被数据库所识别吧?想问一下大家在这种情况下是如何处理的,谢谢======= Edit at 2014-04-23 09:12 by SD_Poplar =========
现在关于这个问题已经有了两种解决方法,一种是
$this->query( "update article set a_lastedit = now() where a_id = 1" );另一种是用date( "Y-m-d H:i:s" )来获取mysql能够识别的时间格式,但是这两种都存在对数据库的依赖性,虽然后者中的格式在Oracle中也是适用的,但是TP模块化的设计初衷也包括了对数据库的封装,让程序员可以不用在意数据库语法之间的差异,就算数据库从mysql换成了Oracle,业务逻辑也不需要进行修改,所以现在这个问题虽然能够解决,但是仍然感觉它的方法不为最优,希望有更好的方法出现,也希望TP开发方能够想办法支持数据库一些常见内置函数调用的写法,谢谢 最佳答案