Как работают левые внешние соединения в Zend framework

У меня есть этот SQL-запрос:

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

И я пытаюсь написать что-то подобное в модели, используя метод leftJoin из Zend_Db_Table, но я понятия не имею, что делаю ... Я пробовал что-то вроде этого:

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

person la_f0ka    schedule 25.05.2011    source источник
comment
добавьте свое решение в качестве ответа и отметьте его как выполненное   -  person JamesHalsall    schedule 26.05.2011
comment
спасибо, что заставил меня заметить, что @Jaitsu, я не сделал этого раньше, потому что я попытался ответить на другой вопрос, который задал пару дней назад, но не смог. На самом деле ... Я не могу отметить свой ответ как правильный до завтра.   -  person la_f0ka    schedule 26.05.2011
comment
нет проблем, проголосовали за ответ и вопрос, чтобы разобраться в этом самостоятельно   -  person JamesHalsall    schedule 26.05.2011
comment
@Jaitsu, большое спасибо;)   -  person la_f0ka    schedule 26.05.2011


Ответы (2)


Я добавляю ответ на вопрос, предложенный @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);
person la_f0ka    schedule 26.05.2011

эй, этот код создает SQL-запрос INNER JOIN, а не OUTER JOIN - это другое дело, верно? Итак, каким должен быть правильный способ выполнения ВНЕШНЕГО СОЕДИНЕНИЯ?

person heheheheheheee    schedule 15.06.2011