Aug 21

Cakephp 学习日志 (二) 不指定

bkkkd , 07:54 , 开发应用 , 评论(0) , 引用(0) , 阅读(42012) , Via 本站原创 | |

Section 2 Model Functions
从PHP的角度来看Model,只是一个继承了AppModel的类。AppModel类在/cake目录中已经定义了,如果你希望创建一个自己的 AppModel基类,你可以放在app/app_model.php位置。AppModel中定义的方法将被所有model所继承并共享。而 AppModel则继承于Cake Lib中的Model类,文件为cake/libs/model.php。

本章将会讨论到大量已经在Cake Model类中定义的方法,所以这里提醒,http://api.cakephp.org 将是您非常重要的参考。

用户定义的Model函数
下面是一个用户定义的Model方法,是帖子的隐藏/显示方法:
Example Model Functions  
<?php  
class Post extends AppModel  
{  
    var $name = 'Post';  
  
    function hide ($id=null)  
    {  
       if ($id)  
       {  
           $this->id = $id;  
           $this->saveField('hidden', '1');  
       }  
    }  
  
    function unhide ($id=null)  
    {  
       if ($id)  
       {  
           $this->id = $id;  
           $this->saveField('hidden', '0');  
       }  
    }  
}  
?>  


获取你需要的数据

findAll
  string $conditions
  array $fields
  string $order
  int $limit
  int $page
  int $recursive

[$conditions Type: string] 检索条件,就是sql中where子句,就像这样 $conditions = "race = 'wookie' AND thermal_detonators > 3"。

[$fields Type: array] 检索属性,就是投影,指定所有你希望返回的属性。 (译注:这里我没有使用字段这个亲SQL的名字而是用了属性这个亲对象的名字,我相信很多PHPer更熟悉基于Sql和DTO的开发模式,但是引入Model的一个初衷就是将关系数据库转换为对象操作,所以投影查询应该理解为检索对象的某些属性)

[$order Type: string] 排序属性 指定了oder by的属性名 [TODO:check whether the multiple order field be supported]

[$limit Type: int] 结果集数据条目限制

[$page Type: int] 结果集分页index,默认为返回第一页

[$recursive Type: int] 递归当设为大于1的整数时,将返回该model关联的其他对象。(译注:如果你使用过类似于Hibernate这样的ORM工具的话,不难理解这个属性就是 LazyLoad属性,但也不完全等同,数字的值代表级联查询的层次数,例如这样,user.country.city.address.id)

find
  string $conditions
  array $fields
  string $order
  int $recursive

find方法和findAll方法的区别在于,findAll方法返回所有符合的结果集,find方法只返回list中的第一个结果。
内文分页: [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16]
Tags:
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]