Zend Framework - 加入查询

时间:2014-04-23 13:08:56

标签: mysql zend-framework join

我构建了一个函数

public function getBannedByLogin($commentId)
    {
    $sql = $this->getDbAdapter()->select()
            ->from(array('comments' => 'comments'), array())
            ->join(array('users' => 'qengine_users'),
            'comments.bannedBy = users.userId',
            array())
            ->where('commentId = ?', $commentId)
        ;
        $row = $this->fetchRow($sql);
        return $row['login'];

    }

还有一些问题,不起作用! :d 我来解释一下你。来自评论的列'bannedBy'返回用户的id,他们给予禁令。我需要与表用户一起加载这个以加载登录字段。哪里有错误?

1 个答案:

答案 0 :(得分:0)

我认为代码的工作原理是不抛出异常。如果是这样,您的代码就可以了,您只需告诉Zend_Db不要选择任何列。

public function getBannedByLogin($commentId)
{
$sql = $this->getDbAdapter()->select()
        ->from(array('comments' => 'comments'))
        ->join(array('users' => 'qengine_users'),
        'comments.bannedBy = users.userId')
        ->where('commentId = ?', $commentId)
    ;
    $row = $this->fetchRow($sql);
    return $row['login'];

}

from()join()函数的最后一个参数是您要选择的列数组。如果传入空数组,则不会选择任何列。没有争论=选择一切。当然,您也可以仅指定所需的列。