此查询无法正常工作。有什么事吗帖子有作者(用户实体)。用户具有关注(ManyToMany自导向)
我正在尝试获取我关注的所有用户帖子
$userId = $this->getUser()->getId();
$qb = $em->createQueryBuilder();
$qb2 = $qb;
$qb2 = $em->createQueryBuilder()
->select('u.following')
->from('AppBundle\Entity\User', 'u')
->where('u.id = :userId');
$qb->select('p')
->from('AppBundle\Entity\Post', 'p')
->where($qb->expr()->In('p.author', $qb2->getDQL()));
$qb->setParameter('userId', $userId);
$dql = $qb->getDQL();
答案 0 :(得分:0)
我将假设您的代码在存储库中,因为它应该是...
src / AppBundle / Controller / PostController.php
$em=$this->getDoctrine()->getManager();
$myResultCollection=$em->getRepository(Post::class)->myCustomQuery($this->getUser());
src / AppBundle / Repository / PostRepository.php
public function myCustomQuery(User $user) {
$em=$this->getEntityManager();
$qb=$em->createQueryBuilder();
return $qb->select("p")
->from(Post::class, "p")
->where($qb->expr()->in("p.author",
$qb->select("u.following")
->from(User::class, "u")
->where("u.id=:USERID")
->getDQL()))
->setParameters(array('USERID'=>$user->getId()))
->getQuery()
->execute();
}
作为旁注,您应谨慎使用引号。
确保在使用DQL时使用双引号(对于SQL也是这样)。
原因是因为查询中的字符串需要简单的引号。