【问题标题】:How do left outer joins work on Zend framework左外连接如何在 Zend 框架上工作
【发布时间】:2011-09-02 04:10:08
【问题描述】:

我有这个 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

我正在尝试使用 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);

【问题讨论】:

  • 将您的解决方案添加为答案并将其标记为已完成
  • 感谢您让我注意到@Jaitsu,我没有早点这样做,因为我尝试回答几天前提出的另一个问题,但我做不到。实际上......直到明天我才能将我的答案标记为正确。
  • 没问题,赞成的答案和问题自己解决
  • @Jaitsu,非常感谢 ;)

标签: zend-framework zend-db zend-db-table


【解决方案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);

【讨论】:

    【解决方案2】:

    嘿,这段代码产生一个 INNER JOIN sql 查询,而不是一个 OUTER JOIN - 这是不同的事情,对吧?那么,正确的OUTER JOIN方法应该是什么?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多