Zend_Db nicht im Controller erreichbar

Security

Erfahrenes Mitglied
Hi,
also ich hab nen großes Problem. Ich will Zend_Db in der bootstrap initialisieren und dann in nem Conroller aufrufen. Sollte ja eigentlich funktionieren, tut aber nicht. Der Fehler lautet:
Fatal error: Call to a member function fetchRow() on a non-object in /var/www/virtual/foo.bar/klub/application/controllers/IndexController.php on line XX

Hat jemand ne Idee?
 
Könntest du bitte die Quelltexte zur Controller-Klasse und die relevanten Abschnitte aus deiner Bootstrap bereitstellen? Dann könnte man dir eine bessere Diagnose stellen.

Ich vermute, du hast die Referenz auf dein Datenbankobjekt nicht im Scope des Controller-Objekts und / oder der entsprechenden Methode, sondern versuchst aus einem privaten Sichtbarkeitsbereich (wie es eine Klassenmethode hat) heraus auf den main-Scope zurückzugreifen.

bootstrap.php
PHP:
// ...
$db = Zend_Db::factory('myAdapter', $config);
Zend_Registry::set('db', $db);
// ...

IndexController.php
PHP:
class IndexController extends Zend_Controller_Action {
    private $_db;

    public function init() {
        parent::init();
        $this->_db = Zend_Registry::get('db');
    }

    public function indexAction() {
        // funktioniert nicht
        $db->fetchRow(/* Query String */);

        // funktioniert:
        $this->_db->fetchRow(/* Query String */);

        // das auch:
        $_db = Zend_Registry::get('db');
        $_db->fetchRow(/* Query String */);
    }
}
 
Zurück