2011-05-25 37 views
4

我有這樣的SQL查詢:如何左外連接在Zend框架的工作

SELECT pais FROM pais LEFT OUTER JOIN users_has_pais ON pais.id = users_has_pais.pais_id WHERE users_has_pais.users_id = 100 

而且我想寫利用的Zend_Db_Table類方法leftJoin模型中類似的東西,但我有沒有什麼線索我做的....我試着像這樣的東西:

$resultSetPais = Zend_Db_Table::getDefaultAdapter(); 
$some = $resultSetPais->select() 
         ->joinLeft(array ('users_has_pais' => 'users'), 
          'pais.id = users_has_pais.pais_id', 'pais'); 

但事實是,我不知道如何使它工作,此代碼只是返回的適配器的信息。

解決:

 $instance = Zend_Db_Table_Abstract::getDefaultAdapter(); 
     $pais = $instance->select(); 
     $pais->from(array('p' => 'pais'), array('p.pais')) 
      ->join('users_has_pais', 'p.id = users_has_pais.pais_id') 
      ->where('users_has_pais.users_id = ?', $row->id); 
     $paisEntry = $instance->fetchCol($pais); 
+0

添加您的解決方案作爲答案並將其標記爲已完成 – JamesHalsall 2011-05-26 11:32:32

+0

感謝您讓我注意到@Jaitsu,我沒有儘早做,因爲我試着回答我前幾天問過的另一個問題,而且我無法做到它。其實......直到明天,我都不能將我的答案標記爲正確。 – 2011-05-26 11:54:25

+0

沒問題,自己搞清楚答案和問題 – JamesHalsall 2011-05-26 12:09:29

回答

1

我加入了這個問題的答案通過@Jaitsu的建議。對於這種左的連接:

SELECT pais FROM pais LEFT OUTER JOIN users_has_pais ON pais.id = users_has_pais.pais_id WHERE users_has_pais.users_id = 100 

代碼應該是這樣的:

$instance = Zend_Db_Table_Abstract::getDefaultAdapter(); 
    $pais = $instance->select(); 
    $pais->from(array('p' => 'pais'), array('p.pais')) 
     ->join('users_has_pais', 'p.id = users_has_pais.pais_id') 
     ->where('users_has_pais.users_id = ?', $row->id); 
    $paisEntry = $instance->fetchCol($pais); 
-1

嘿,這代碼產生的INNER JOIN SQL查詢,而不是一個OUTER JOIN - 這是不同的東西,對不對?那麼,做OUTER JOIN的正確方法是什麼?