2009-12-16 5 views
4

정확하게 quickstart guide과 같은 모델을 구현하고 있습니다.Zend Framework : 지정된 열 값으로 테이블 행을 찾는 방법?

내 모델에서는 findByToken() 메서드를 구현하려고합니다. 현재 find() 메서드는 $id 매개 변수를 허용하지만 다른 열의 값으로 찾고 싶습니다.

//excerpt from the quickstart guide 
public function find($id, Default_Model_Guestbook $guestbook) 
{ 
    $result = $this->getDbTable()->find($id); 
    if (0 == count($result)) { 
     return; 
    } 
    $row = $result->current(); 
    $guestbook->setId($row->id) 
       ->setEmail($row->email) 
       ->setComment($row->comment) 
       ->setCreated($row->created); 
} 

는이 같은 일을했지만, 나는 일을 생각하지 않는다 :

$db = $this->getDbTable(); 
$where = $db->getAdapter()->quoteInto('token = ?', $token); 
$result = $db->find($where); 

무엇 지정된 열의 값을 기준으로 행을 찾을 수있는 적절한 방법이 될 것입니다?

답변

8
$result = $db->fetchAll($where); 

또는 하나의 행만 검색하려고하는 경우.

$result = $db->fetchRow($where); 

또한 추상화 어댑터에게 조금 더를 유지하면서 Zend_Db_Select 개체를 사용할 수 있습니다

$db = $this->getDbTable(); 
$select = $db->select()->where('token = ?', $token); 
$result = $db->fetchAll($select); 
4

이 쉽게 선택 객체를 생성하고이 객체를 사용하여 행을 인출하여 수행 할 수 있습니다. 잘 매뉴얼에 설명 된 것 :

$select = $this->getDbTable()->select()->where('token = ?', (string) $token); 
$row = $this->getDbTable()->fetchRow($select); 
: http://framework.zend.com/manual/en/zend.db.select.html#zend.db.select.execute

귀하의 코드처럼 보일 수 있습니다

관련 문제