我刚刚开始使用 Zend Framework 并开始了解它是如何工作的。我检查了官方文档a并遵循了几个教程,我发现的大多数示例都非常基础:应用程序中使用了一个或两个表(最多),并且为每个表创建了一个模型。那里没问题,但是现在我在一个真实的应用程序中工作,我从一个复杂的 sql 查询中获取我的数据,该查询包括几个表(准确地说是 5 个)和一个存储过程。老实说,我不知道如何进行此操作,甚至不知道从哪里开始尝试。
我是否应该为查询中涉及的每个表(其中 5 个)创建一个模型,即使我只需要其中一些字段中的 1 个或 2 个字段,然后尝试做出一个有效的选择?还是我应该在数据库上创建一个视图(存储过程听起来不太好),然后将模型基于该视图?还是我应该使用 ORM 让我的生活更轻松?如果是这样,你知道有什么可以与 Firebird 一起正常工作的吗?还是我不知道我应该做一些与我提到的完全不同的事情?
更新
根据 Will 的建议并查看 Zend 的文档,我决定使用 Adapter 直接以 SQL 格式进行查询,但它还不能正常工作。到目前为止,我的控制器中的内容是:
use Zend\Db\Adapter\Adapter as DbAdapter;
use Zend\Db\ResultSet\ResultSet;
...
public function indexAction() {
$db = new DbAdapter(array(
'driver' => 'Pdo',
'dsn' => 'firebird:host=127.0.0.1;port=3050;dbname=C:\\wamp\\www\\Reports\\data\\THdata.GDB',
'username' => 'SYSDBA',
'password' => 'masterkey' ));
$sql = 'SELECT SELITE FROM TILIKAUSI WHERE COMPANYID = 1'; //I am starting with a simple query first.
$sql_result = $db->createStatement($sql, array(125000, 125200))->execute();
if($sql_result->count() > 0){
$results = new ResultSet();
$this->view->data = $results->initialize($sql_result)->toArray();
}
return $this->view;
}
结果是一个错误,如Creating default object from empty value in (Controller path, line: $this->view->data = $results;)
似乎没有返回任何值。这是进行此查询的适当方式还是我遗漏了什么?谢谢你的帮助!