1

在我的应用程序中,我设置了数据库连接。现在我想切换表并且我不断收到以下错误

Catchable fatal error: Argument 1 passed to Application_Model_PgeSeismicFile::__construct() must be an array, object given, called in /opt/eposdatatransfer/application/models/PgeSeismicFileMapper.php on line 58 and defined in /opt/eposdatatransfer/application/models/PgeSeismicFile.php on line 10 

我有两个表的两个模型。当我尝试访问第二个表时出现错误。访问和设置第一个表很好,我也是这样做的。这是我切换表格的方式。

private $_dbTable = null;

    public function setDbTable($dbTable, $path = false)
    {
        $project = $_REQUEST['username'];

        $filename = $path . "PSDB.db"; //APPLICATION_PATH . "/data/db/".$project."/PSDB.db";

        if (!file_exists($filename)) {
            //$this->_redirect('/');
            // need to redirect and pass eror message for user
            throw new Exception("File does not exist");
        }

        try{
            //exit("3");
            $dbAdapter = Zend_Db::factory("pdo_sqlite", array("dbname"=> $filename));
        }catch (Zend_Db_Adapter_Exception $e) {
            // perhaps a failed login credential, or perhaps the RDBMS is not running
            var_dump($e);
            exit("1");

        } catch (Zend_Exception $e) {
            // perhaps factory() failed to load the specified Adapter class
            var_dump($e);
            exit("2");
        }

        if (is_string($dbTable)) {
            print_r($dbAdapter);
            $dbTable = new $dbTable($dbAdapter);
            $dbTableRowset = $dbTable->find(1);
            $user1 = $dbTableRowset->current();
            //var_dump($user1);
            //exit("hello");
            //$row = $user1->findDependentRowset();
        }
        if (!$dbTable instanceof Zend_Db_Table_Abstract) {
            throw new Exception('Invalid table data gateway provided');
        }
        $this->_dbTable = $dbTable;
        //$session = new Zend_Session_Namespace();
        //$session->dbAdapter = $this->_dbTable;
        //var_dump($this);
        //exit();
        return $this;
    }

    public function getDbTable($path = false)
    {
        if (null === $this->_dbTable) {
            $session = new Zend_Session_Namespace();
            //$this->setDbTable('Application_Model_PgeSeismicFile',$path);
            $this->dbTable = new Application_Model_PgeSeismicFile($session->dbAdapter);
        }
        return $this->_dbTable;
    }

它在这条线上出错

$this->dbTable = new Application_Model_PgeSeismicFile($session->dbAdapter);

在我的会话中,我正在存储:

$dbAdapter = Zend_Db::factory("pdo_sqlite", array("dbname"=> $filename));
4

1 回答 1

0

尝试这个

$dbAdapter = Zend_Db::factory("pdo_sqlite", array("dbname"=> $filename));

Zend_Db_Table::setDefaultAdapter($dbAdapter);

$this->dbTable = new Application_Model_PgeSeismicFile;
于 2013-04-04T08:57:23.810 回答