在CakePHP中找到一个的方法

在CakePHP中找到一个的方法,cakephp,cakephp-1.2,Cakephp,Cakephp 1.2,CakePHP中的model方法read()只返回一条记录,因此我们不需要在结果集周围循环,如下所示: //In Controller $item = $this->Item->read(null,$id); $this->set(compact('item')); //In View echo $item['Item']['title']; 但是,我希望能够通过一些条件控制结果,read()方法不提供添加条件的功能,因此我必须使用find()方法,如下所示: //In c

CakePHP中的model方法read()只返回一条记录,因此我们不需要在结果集周围循环,如下所示:

//In Controller
$item = $this->Item->read(null,$id);
$this->set(compact('item'));

//In View
echo $item['Item']['title'];
但是,我希望能够通过一些条件控制结果,read()方法不提供添加条件的功能,因此我必须使用find()方法,如下所示:

//In controller
$item = $this->Item->find('all',array('conditions' => array('id' => $id, 'lock' => 'yes')));
$this->set(compact('item'));

//In View
echo $item[0]['Item']['title'];
是否有任何解决方案允许find只返回一条记录,例如,我不必处理$item[0]和$item作为第一个示例?

永远不要使用read(),始终使用find(first):


read()被认为是一种不好的做法,因为它改变了模型本身,通常弊大于利,尤其是当您不知道或不期望这种方法的确切结果时。

它不是。至少在当前版本中没有。你指的是什么来源?它也已从(官方)教程中删除。请参阅:处理[0]的好问题和逻辑。:)@马克的升级是个很好的主意。然而,我在一些项目上陷入了困境,我是用CakePHP1.2.x启动的,为了管理迁移,我不需要更多的时间延迟。
$item = $this->Item->find('first', $options);