Php 学说与左联条件

Php 学说与左联条件,php,symfony,doctrine,Php,Symfony,Doctrine,当我使用条件时,我的关系有问题。我的邮政实体: /** * @ORM\ManyToOne(targetEntity=User::class, inversedBy="posts") * @ORM\JoinColumn(nullable=false) */ private $user; /** * @ORM\Column(type="smallint", nullable=true) */ private $type; 和用户实体 /** *

当我使用条件时,我的关系有问题。我的邮政实体:

/**
 * @ORM\ManyToOne(targetEntity=User::class, inversedBy="posts")
 * @ORM\JoinColumn(nullable=false)
 */
private $user;

/**
 * @ORM\Column(type="smallint", nullable=true)
 */
private $type;
和用户实体

/**
 * @ORM\OneToMany(targetEntity=Post::class, mappedBy="user")
 */
private $posts;
存储库使用此条件时存在问题:

return $this->createQueryBuilder('p')
    ->addSelect('p', 'u', 'up')
    ->leftJoin('p.user', 'u')
    ->leftJoin('u.posts', 'up', 'WITH', 'p.type = up.type')
    ->getQuery()
    ->getResult()
;
数据库中有这样的数据

我有这些。在第一篇文章中,对于用户来说,文章应该是相同类型的。(应该没有id为3和5的帖子)。如果我使用
getArrayResult()
而不是
getQuery()
,一切都可以正常工作,但我需要实体。所以这可能是由于优化。有人知道怎么处理吗

另外还添加了

我认为您需要使用(并在映射数据时,而不是在调用存储库中的方法时,在ORM执行的连接上添加必要的过滤器)

您可以在Symfony中找到标准使用的实际示例(即使视频不可用,您也有代码和说明)

最后,将
WITH
条件从连接(从SQL的角度来看是正确的)移动到一个条件(对于ORM很有用)应该可以解决您遇到的问题