Zend framework 在zend框架中加入zend_db_table_抽象类

Zend framework 在zend框架中加入zend_db_table_抽象类,zend-framework,zend-db-table,Zend Framework,Zend Db Table,我有一个带有两个模型的模块,它们扩展了Zend_Db_Table_Abstract: class Departments_Model_Subpages extends Zend_Db_Table_Abstract { protected $_name = 'bktg_departments_subpages'; protected $_primary = 'id'; } class Departments_Model_Departments extends Zend_Db_Ta

我有一个带有两个模型的模块,它们扩展了Zend_Db_Table_Abstract:

class Departments_Model_Subpages extends Zend_Db_Table_Abstract
{
    protected $_name = 'bktg_departments_subpages';
    protected $_primary = 'id';
}

class Departments_Model_Departments extends Zend_Db_Table_Abstract
{
    protected $_name = 'bktg_departments';
    protected $_primary = 'id';
}
通过阅读文档,我想做的是这样的事情(显然是错误的):

我错过了什么?我只是不能对Zend连接保持清醒的头脑,我想我最终会直接编写sql

谢谢你看

编辑

以下是我现在的工作内容:

$depQuery = $depTable->select()->setIntegrityCheck(false)
->from($depTable, array('id', 'title'))
->joinLeft($subTable, 'bktg_departments.id = bktg_departments_subpages.parent_id',       array('COUNT(id) as count'))
->order('id DESC')
->group('id');
适用于我的sql:

SELECT bktg_departments.id, bktg_departments.title, count(bktg_departments_subpages.id) FROM bktg_departments left join bktg_departments_subpages on bktg_departments.id = bktg_departments_subpages.parent_id group by bktg_departments.id

我在Zend中复制时遇到问题。

您的join()似乎有问题。第二个参数应该是join的ON子句,您不再需要where()了:


据我所知,将对象传递到表参数并不能得到预期的结果,而且总是会产生错误。即使是$table->getName()这样的方法也会产生错误,因此我被迫手动键入名称。我不知道我是否期望select对象有更多的功能,或者这是1.11中的一个bug。不管怎样,我希望这能帮助一些人克服挫折

以下代码起作用:

$depQuery = $depTable->select()->setIntegrityCheck(false)
->from($depTable, array('id', 'title'))
->joinLeft('bktg_departments_subpages', 'bktg_departments.id = bktg_departments_subpages.parent_id', array('count' => 'COUNT(bktg_departments_subpages.id)'))
->group('bktg_departments.id')
->order('bktg_departments.id DESC');

所以我把我的参数搞混了?我真的很感谢你的帮助。因为我可以将模型作为对象传入,所以是否仍要将这些对象用作ON子句,或者是否总是需要将其键入(例如,如果出于某种原因我重命名了表)。尽管这并没有按预期工作。我想计算将父表id与子表id匹配的子表的返回id。
$depQuery = $depTable->select()->setIntegrityCheck(false)
->from($depTable, array('id', 'title'))
->join($subTable, 'bktg_departments.id = bktg_departments_subpages.parent_id', array('COUNT(id) as `count`'));
$depQuery = $depTable->select()->setIntegrityCheck(false)
->from($depTable, array('id', 'title'))
->joinLeft('bktg_departments_subpages', 'bktg_departments.id = bktg_departments_subpages.parent_id', array('count' => 'COUNT(bktg_departments_subpages.id)'))
->group('bktg_departments.id')
->order('bktg_departments.id DESC');