1

モデル内のデータベースへのクエリを次のように作成しようとすると

class Application_Model_DbTable_Resume extends Zend_Db_Table_Abstract
{

protected $_name = 'users';

public function getFiveLastResume (){

   $select= $db->select()->from('users')->order("id DESC")->limit(5);
   $stmt = $db->query($select);
   $row = $stmt->fetchAll();       
   return $row;

   }
}

だから私はエラーがありますNotice: Undefined variable: db

クエリの前にアダプタを作成した場合

   $db = Zend_Db::factory('PDO_MYSQL',array(
'host'     => '127.0.0.1',
    'username' => 'root',
    'password' => '',
    'dbname'   => 'sport'       
));

それはうまくいきます。アダプターが機能しないのはなぜですか?

私のapplication.iniには、適切なデータベース構成が含まれています。アダプターを含めなくても、クエリはより簡単に機能します。zendのimnoob、ありがとう

4

1 に答える 1

0

$dbはローカルスコープで未定義であるため、エラーが発生します。

DbTableオブジェクト内にいるので$this、DBアダプタを取得するために使用できます。

public function getFiveLastResume () {
    $select = $this->select()->from('users')->order("id DESC")->limit(5);
    $stmt   = $select->query();
    $row    = $stmt->fetchAll();       
    return $row;
}

アプリケーションの他の場所では、以下を使用してデフォルトのDBアダプターへの参照を取得できるはずです。

$db = Zend_Db_Table::getDefaultAdapter();
$select = $db->select()->from('table')...;

もちろん、これは、Zend_Db_Tableオブジェクトを作成し、それをデフォルトのアダプタとして設定していることを前提としています。

于 2012-07-26T22:16:33.867 に答える