开发者

How do left outer joins work on Zend framework

开发者 https://www.devze.com 2023-03-08 15:41 出处:网络
I have this SQL query: 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

I have this SQL query:

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

And I'm trying to write something similar within a model using the leftJoin method from Zend_Db_Table but开发者_如何学编程 I have no clue on what I'm doing.... I tried with something like this:

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

But truth is I have no idea how to make it work and this code just returns the adapter information.

SOLVED:

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


I'm adding the answer to the question as suggested by @Jaitsu. For this kind of left join:

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

The code should be something like:

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


hey this code produces an INNER JOIN sql query, not an OUTER JOIN - it is different thing, right? so, what should be the correct way of doing OUTER JOIN?

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号