如何使用'where'子句中'join'子句的值?

时间:2014-11-15 12:40:07

标签: php mysql zend-framework2

有加入,我需要在'where'中包含它的值。有没有办法做到这一点?换句话说,我想将'where'子句仅应用于正在连接的值。我真的很困惑,可能这个任务可以更轻松地解决。

$this->table = "CoolTable";
$sql = new Sql($this->getAdapter());
    $select = $sql->select()
        ->columns(array(/*some expressions...*/))
        ->from($this->table)
        ->join(
            array('ct' => 'CoolTable'),
            new Expression('
                ct.a = CoolTable.a AND
                ct.b = CoolTable.b
            '),
            array()
        )
        /*another joins...*/
        ->where(array(
            'CoolTable.a' => $someExternalVar,
            'CoolTable.b = ?' => '$ct.a',
        ))

我的尝试怎么样:

  1. 'CoolTable.b = ?' => '$ct.a'
  2. 'CoolTable.b' => 'ct.a'
  3. 'CoolTable.b' => new Expression('ct.a') /*it's a really pity, yes*/
  4. new Predicate\PredicateSet( array( new Operator( 'CoolTable.b', Operator::OPERATOR_EQUAL_TO, 'ct.a' ), ), Predicate\PredicateSet::TYPE_VALUE ),

0 个答案:

没有答案