Zend_Db_Table_Abstract :: update () возможная ошибка - PullRequest
0 голосов
/ 15 августа 2011

У меня есть этот код

$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

Спасибо за просмотр:)

1 Ответ

0 голосов
/ 15 августа 2011

Что вы пытаетесь сделать?

Ваш Application_Model_UserModel должен расширяться Zend_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);
     }
}

Теперь, когда вы обновляете pass $ data, который является ассоциативным массивом с ключом в качестве полей в таблице и вторым предложением where.

Это не ошибка в Zend-Framework.

...