Aug
21
findAllBy<fieldName>
string $value
string $value
这是一个非常有魔力的方法,你可以看成是一个快速按照某个属性检索数据的方法,下面是在controller中的一段示例代码:
<?
$this->Post->findByTitle('My First Blog Post');
$this->Author->findByLastName('Rogers');
$this->Property->findAllByState('AZ');
$this->Specimen->findAllByKingdom('Animalia'); ?>
返回类型和find() findAll()一样,是一个array。
findNeighbours
string $conditions
array $field
string $value
string $conditions
array $field
string $value
这个方法首先是通过conditions过滤获取结果集,然后根据field=value查找符合的对象(仅包含$field中指定的属性),最终返回该对象以及该对象的上一个对象和下一个对象。这在诸如相册这样的应用场景中将会非常有作用,你可以方便的获取当前相片,上一张和下一张这样的结果集合。注意:该方法只能作用于数值型和日期时间型属性。下面是示例代码:
<?
class ImagesController extends AppController
{
function view($id)
{
// Say we want to show the image...
$this->set('image', $this->Image->find("id = $id");
// But we also want the previous and next images...
$this->set('neighbours', $this->Image->findNeighbours(null, 'id', $id);
}
} ?>
class ImagesController extends AppController
{
function view($id)
{
// Say we want to show the image...
$this->set('image', $this->Image->find("id = $id");
// But we also want the previous and next images...
$this->set('neighbours', $this->Image->findNeighbours(null, 'id', $id);
}
} ?>
我们拿到了包含一个完整$image['Image']对象的array,以及$neighbours['prev']['Image']['id']和$neighbours['next']['Image']['id']。
field
string $name
string $conditions
string $order
返回conditions过滤后按order排序的第一个结果中的name属性值,返回类型为string。
findCount
string $conditions
string $conditions
返回conditions过滤后结果集的数量。即select count .....
generateList
string $conditions
string $order
int $limit
string $keyPath
string $valuePath
generateList方法可以非常快捷的获取一个key-value这样的list,其实就是其他语言中的map类型,在web领域中,下拉框可能将是该方法最大的受益者。$conditions, $order 和 $limit这3个参数的用法和findAll()没有区别,$keyPath 和 $valuePath是model中用来填充结果集中key和value的属性。举个例子,在权限操作中,角色的定义往往是id - name这样的组合,参见下面的示例代码:
<?
$this->set(
'Roles',
$this->Role->generateList(null, 'role_name ASC', null, '{n}.Role.id', '{n}.Role.role_name')
);
//This would return something like:
array(
'1' => 'Account Manager',
'2' => 'Account Viewer',
'3' => 'System Manager',
'4' => 'Site Visitor'
);
?>