一种在CakePHP中找到一种方法

Sai*_*akR 2 cakephp cakephp-1.2

CakePHP中的模型方法read()只返回一条记录,因此我们不需要像结果一样循环结果集:

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

//In View
echo $item['Item']['title'];
Run Code Online (Sandbox Code Playgroud)

但是,我希望能够通过某些条件控制结果而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'];
Run Code Online (Sandbox Code Playgroud)

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

mar*_*ark 11

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

$item = $this->Item->find('first', $options);
Run Code Online (Sandbox Code Playgroud)

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

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

  • 也许是时候升级 - 代码和思想;) (6认同)