2

CakePHPのモデルメソッドread()は1つのレコードのみを返すため、結果セットを次のようにループする必要はありません。

//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が1つのレコードのみを返すことを許可するソリューションはありますか?つまり、最初の例として$ item[0]と$itemだけを処理する必要はありませんか?

4

1 に答える 1

13

read()を使用することはなく、常にfind(first)を使用してください。

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

http://book.cakephp.org/2.0/en/models/retrieveing-your-data.html#find-firstを参照してください

read()は、モデル自体を変更し、通常、このメソッドの正確な結果がわからない、または期待できない場合は、良いことよりも害を及ぼすため、悪い習慣と見なされます。

于 2013-03-13T22:33:05.790 に答える