一种在CakePHP中找到一种方法

时间:2013-03-13 22:26:35

标签: cakephp cakephp-1.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'];

是否有任何解决方案允许查找只返回一条记录,即我不必处理$ item [0]和$ item作为第一个例子?

1 个答案:

答案 0 :(得分:9)

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

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

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

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