在非对象上调用成员函数descrietable()

时间:2014-03-21 14:16:48

标签: php zend-framework

我正在尝试使用zendframework的一个技巧,我想创建一个自动生成dbTable的类:

这是我定义的类:

class DbTable extends Zend_Db_Table_Abstract {

public $db_table; 

public function __construct ($model_name='')
    {
        //echo "setting database";
        $this->db_table = $this->get_db_table($model_name);
    }


public function get_db_table($model_name='')
{
    if(!empty($model_name))
        {
        $model = 'Application_Model_DbTable_'.ucfirst($model_name);
        if (null === $this->db_table) 
            {
            $this->set_db_table($model);
            }
        return $this->db_table; 
        }
    else 
        {
            throw new Exception('Database Table was not defined');
        }

}

public function set_db_table($dbTable)
{
    if (is_string($dbTable)) {
        $dbTable = new $dbTable();
    }
    if (!$dbTable instanceof Zend_Db_Table_Abstract) {
        throw new Exception('Invalid table data gateway provided');
    }
   return $this->db_table = $dbTable;

}

}

当我尝试在例如User模型上使用它时,用我定义的函数找到一个带有id的用户:

public function find_by_id($id=0)
{
    $DbTable = new DbTable('User');
    $result = $database->find($id);
    if(empty($result))
        {
            return false;
        }

    else 
        {
    $row = $result->current();
    $entry = $this->instantiate($row);

    return $entry;  
        }


}

我得到上面提到的错误!

有任何帮助吗?不管怎样,谢谢!

1 个答案:

答案 0 :(得分:0)

我想你错过适配器。

试试这个:
替换

$DbTable = new DbTable('User');
$result = $database->find($id);

通过

$DbTable = new DbTable('User');
$result = $DbTable->db_table->find($id);