2

CakePHP 中的模型方法 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 作为第一个示例?

4

1 回答 1

13

永远不要使用 read(),总是使用 find(first):

$item = $this->Item->find('first', $options);

http://book.cakephp.org/2.0/en/models/retrieving-your-data.html#find-first

read() 被认为是不好的做法,因为它会更改模型本身,并且通常弊大于利 - 特别是如果您不知道或不期望此方法的确切结果。

于 2013-03-13T22:33:05.790 回答