Zend framework2 在zend framework 2中使用if条件运行子查询

Zend framework2 在zend framework 2中使用if条件运行子查询,zend-framework2,Zend Framework2,我想在zend framework 2中执行这个查询,这是我的代码,但我能够实现第二个包含子查询的连接 SELECT t1.post_id, t1.user_id, t1.total_likes, t1.total_comments, t2.name, if(t3.user_id, 1, 0) as user_like FROM `game_posts` as t1 left join users as t2 ON t1.user_id=t2.user_id left join( select

我想在zend framework 2中执行这个查询,这是我的代码,但我能够实现第二个包含子查询的连接

SELECT
t1.post_id, t1.user_id, t1.total_likes, t1.total_comments,
t2.name,
if(t3.user_id, 1, 0) as user_like
FROM `game_posts` as t1
left join users as t2 ON t1.user_id=t2.user_id
left join(
 select post_id, user_id from post_likes where user_id=1
)t3
on t1.post_id=t3.post_id

where t1.game_id=1
order by t1.post_id desc
基本上有3个表游戏帖子用户帖子喜欢表, 我正在获取所有game_id=1的帖子,其中包含创建帖子的用户的姓名以及当前用户标志(如果他喜欢或不喜欢帖子)

请帮助我

有您的疑问:

$adapter = $this->tableGateway->getAdapter();
$sql = new Sql($adapter);
$select = $sql->select();

// MAIN POST TABLE
$select->from(array('t1' => 'game_posts'));

// GET POST USER
$select->join(
    array('t2' => 'users'),
    new Expression('t1.user_id = t2.user_id'),
    array(
        "user_name"     => "name"
    ),
    'LEFT'
);


$select->where(array("t1.game_id"=>$gameId));

$select->order("post_date DESC");

$statement = $sql->prepareStatementForSqlObject($select);
$results = $statement->execute();

$resultSet = new ResultSet();
$resultSet->initialize($results);
$result = $resultSet->toArray();

return $result;
$adapter = $this->tableGateway->getAdapter();
$sql = new Sql($adapter);
$select3 = $sql->select();
$select3->columns([post_id, user_id])->from(post_likes)->where(['user_id' => 1]);

$select = $sql->select();
$select->columns(['post_id', 'user_id', 'total_likes', 'total_comments', 'user_like' => new Expression('if(t3.user_id, 1, 0)')])
->from(['t1' => 'game_posts'])
->join(['t2' => 'users'], 't1.user_id=t2.user_id', ['name'], Select::JOIN_LEFT)
->join(['t3' => $select3], 't1.post_id=t3.post_id', [], Select::JOIN_LEFT)
->where(['t1.game_id' => $gameId])
->order('post_date DESC');