Symfony:在两个实体之间创建一个不带映射的queryBuilder

时间:2016-07-30 15:45:58

标签: doctrine-orm symfony

我有两个实体(两个实体之间没有关系):A:Relation和B:Post。 我从当前用户收到每条帖子,并在主页上显示这些请求:

public function getPostsCurrentUser($currentUser)
{
    $qb = $this->createQueryBuilder('p');
    $qb->where('p.member = :member')
        ->setParameters(['member' => $currentUser])
        ->orderBy('p.created', 'DESC');

    return $qb->getQuery()->getResult();
}

在示例中" A:关系"用户2跟随用户1.当用户跟随​​其他用户时,我还希望在主页上显示当前用户正在关注的每个用户帖子。 我不知道如何创建此请求。有谁能够帮我 ?

由于

1 个答案:

答案 0 :(得分:0)

http://sqlfiddle.com/#!9/c5a0bf/2的意义上,我建议使用子查询来选择所有被跟踪用户的ID:

class PostRepository {
    public function getPostsOfUser($id) {
        $query = $this->getEntityManager()->createQuery(
            "SELECT p.content
             FROM AppBundle:Post p
             WHERE p.member = :id
             OR p.memberId IN (
                 SELECT r.friend
                 FROM AppBundle:Relation r
                 WHERE r.user = :id
             )
             ORDER BY p.created DESC"
        );

        return $query->setParameter('id', $id)
                     ->getResult();
    }
}