2011-08-15 1 views
0

나는 예외를 throw이 코드Zend_Db_Table_Abstract :: 업데이트() 버그에

$db = Zend_Db_Table_Abstract::getDefaultAdapter(); 
$users_table = new Application_Model_UserModel(); 
$result = $users_table->update(array(
    "confirmed" => 1, 
    "key" => null 
), array(
    $db->quoteInto("'type' = ?", Application_Model_UserModel::TYPE_AWATAG), 
    "'confirmed' = 0", 
    $db->quoteInto("'id' = ?", $id), 
    $db->quoteInto("'key' = ?", $key) 
)); 

// no record updated 
if ($result == 0) { 

    throw new Zend_Exception("User not found."); 

} 

에게 있습니다 (즉 : 사용자 레코드가 업데이트되지 않은), 심지어 모든 조건이 올바른지 곳.

버그가 있습니까? 어떤 오류가 보이십니까?

나는이 방법으로 모든 열 이름과 추가 테이블 참조를 인용 부호로 둘러싸이지 않은

솔루션 :

tablename.columnname = newvalue 

감사합니다 :)

+0

나를 모델 코드로 표시 할 수 있습니까? 나는 당신이 컨트롤러에서 이것을하고 있다고 느낍니다. 컨트롤러로부터 $ db = Zend_Db_Table_Abstract :: getDefaultAdapter();를 호출 할 필요가 없다. 아래의 것과 같이 전달하십시오. –

답변

0

당신이 뭘 하려는지 시청?

Application_Model_UserModelZend_Db_Table_Abstract이어야합니다.

http://framework.zend.com/manual/en/zend.db.table.html#zend.db.table.defining

$_name 테이블 이름을 추가하는 것을 기억하십시오 참조하십시오.

class Application_Model_DbTable_Guestbook extends Zend_Db_Table_Abstract 
{ 
    /** Table name */ 
    protected $_name = 'guestbook'; 

    //Now add you method and save from here 
    public function updateGuest($post, $id) 
    { 
     $data = array(
       'updated_on'  => '2007-03-23', 
       'bug_status'  => 'FIXED' 
     ); 

     $where = $this->getAdapter()->quoteInto('bug_id = ?', 1234); 

     $this->update($data, $where); 
    } 
} 

이제 빠른 시작에서 코드의 비트는 테이블의 필드로 키를 연관 배열이다 패스 $ 데이터, 두 번째 절을 업데이트 할 때.

이것은 zend-framework의 버그가 아닙니다.

+0

답변 주셔서 감사합니다 :) 미안하지만, 나는 어디서 오류인지 이해하지 못합니다. ([매뉴얼] (http://framework.zend.com/manual/en/zend.db.table. html) : _ [...] 두 번째 인수는 SQL 표현식의 배열 일 수 있습니다. 표현식은 AND 연산자를 사용하여 부울 조건으로 결합됩니다. _ –

+0

'Application_Model_UserModel' 코드를 표시하십시오. –