我正在尝试使用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;
}
}
我得到上面提到的错误!
有任何帮助吗?不管怎样,谢谢!
答案 0 :(得分:0)
我想你错过适配器。
试试这个:
替换
$DbTable = new DbTable('User');
$result = $database->find($id);
通过
$DbTable = new DbTable('User');
$result = $DbTable->db_table->find($id);