2012-07-02 36 views
0

我有两个型号的模块扩展Zend_Db_Table_Abstract:加入与zend_db_table_abstract类Zend框架

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'; 
} 

通过文档阅读,我想要做的就是这样的事情(显然,错误的):

$depTable = new Departments_Model_Departments(); 
$subTable = new Departments_Model_Subpages(); 

$depQuery = $depTable->select()->setIntegrityCheck(false) 
->from($depTable, array('id', 'title')) 
->join($subTable, array('COUNT(id) as `count`')) 
->where('bktg_departments.id = bktg_departments_subpages.parent_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的问题。

回答

0

至于我可以告诉大家,传递对象到表中参数不给你预期的结果,并始终产生错误。即使是像$ table-> getName()这样的方法也会产生错误,所以我不得不手动输入名称。我不知道我是否期望从选择的对象中获得更多的支持,那么它有能力或者这是1.11中的一个错误。无论哪种方式,我希望这可以帮助有挫折感的人。

下面的代码工作:

$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'); 
0

你加入()似乎有问题。第二个参数应该是加入了ON子句,你会不会需要其中()了:

$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`')); 
+0

所以,我有我的参数混了?我非常感谢帮助。 因为我可以将模型作为对象传递,是否有将这些对象用作ON子句或者是否始终需要键入(例如,如果由于某种原因我重命名该表)。 – dbergunder

+0

虽然这没有按预期工作。我想计数subTable的匹配parent_id subTable ID的返回的ID。 – dbergunder