1

我有一条 SQL 语句

select a.username 
from friendships f1
inner join friendships f2 on (f1.user = f2.friend and f1.friend = f2.user) 
inner join users a ON (a.user_id = f1.friend) where f1.user = '24'

我在 phpmyadmin 上执行了这个查询,没关系。

但我不知道如何在 Zend 中进行此查询

$select = $this->_db_table->select()
->setIntegrityCheck(false)
->from(array('f1' => 'friendships'), array('u.*'))
->joinInner(array('f2' => 'friendships'), 
            array('f1.user = f2.friend',  'f1.friend = f2.user'))
->joinInner(array('u' => 'users'), array('u.user_id = f1.friend'))
->where('f1.user = ?', $user_id);

我使用此代码,但它不起作用,有什么想法吗?

4

2 回答 2

0

你用的是什么版本的ZF?以下是您在 ZF 1.12 中的操作方式:

$this->_db_table->getAdapter()->select()
    ->from("friendships as f1")
    ->joinInner("friendships as f2", "f1.user = f2.friend AND f1.friend = f2.user")
    ->joinInner("users as a", "a.user_id = f1.friend", array("a.username"))
    ->where("f1.user = ?", $user_id)
    ->query()
    ->fetchAll(); // use ->fetch() if you only want to retrieve one record

在手册中阅读更多信息:

于 2013-06-25T22:10:32.103 回答
0

究竟是什么行不通?您收到的是 PHP/Zend 错误还是 SQL 错误?

您可以使用 $select->assemble() 来检查准备好的查询并将其与您的期望进行比较:

echo $select->assemble();
于 2013-06-26T00:07:35.953 回答