注意save操作是如何放置在一个条件语句中:如果你试图保存数据到model中,cake自动尝试确数据正确(根据你提供的规则)。可以查看第十章了解更多关于正确规则(validation).如果不想查看正确性直接保存数据,使用save($data,false);
其他有用的保存方法:
- ●savaFieldId($name,$value)
○保存一个单field的值
- ●getLastInsertID()
○返回最近创建记录的ID
1.4 Model的Callbacks
在我们接近0.10.x最终版的时候,我们添加了一些model的回调函数,允许用户能够逻辑上悄悄的在model操作前或操作后执行。为了在应用中获得这种方法,在model中使用提供的参数,重载下面的这些方法
- ●beforeFind($conditions)
○这个回调函数在一个查询操作开始之前执行。将查询前的操作逻辑放到这个方法里面。当你在model中重写(override)这个方法时,当你想要find操作执行时候返回true,当你想要执行中止时候返回false
- ●afterFind($results)
○使用这个回调函数可以修改从find操作中返回的结果,或者实现其他任何的find后逻辑。这个函数的参数是model的find操作的结果,返回的是修改后的结果。
- ●beforeSave()
○在这个函数中放置任何保存前的逻辑。如果你像保存操作执行则返回true,否则返回false
- ●afterSave()
○放置任何你想要在保存后执行的代码在这个回调函数中
- ●beforeDelete()
○放置删除前的逻辑代码。想要删除操作执行则返回true,否则返回false
- ●afterDelete()
○放置任何你想要在删除后执行的代码在这个回调函数中
2. Model 变量
当你创建你的models时候,你可以设置一些特殊的变量,来获得对Cake函数的使用。
- ●$primaryKey
○如果这个model关联到一个数据库的table,而且数据库的主键并不是id,那么使用这个变量来告诉Cake主键的名字
- ●$transactional
○告诉Cake该model是否支持传输(举例 begin/commit/rolback),设置为boolea值。
- ●$useTable
○如果你想使用的数据库的table并不是model名的复数形式,而且你也不想改变table名,设置这个变量为table名
- ●$validate
○确认传递给model的数据是否正确的一个数组。查看第十章
- ●$useDbConfig
○还记得数据库设置中,你可以在/app/config/database.php文件中设置么?使用这个变量可以交换他们