2012-07-02 76 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