我有一个有效的连接表继承。
- 抽象超类:人
- 子类:父母和孩子
在 ChildRepository 内部,我想进行一个查询,该查询引用 Person 类中的对象。
人.php:
<?php
[...]
/**
* @ORM\ManyToOne(targetEntity="User")
* @JoinColumn(name="id_user", referencedColumnName="id")
* @Assert\NotBlank
*/
private User $user;
[...]
例如,当我通过 findAll() 获取所有 Children 时,我可以获得他们的 User 对象,因此连接有效(User 对象是创建此数据库条目的用户)。现在我想计算一个用户创建的孩子的数量:
在 ChildrenRepository.class 内部:
$qb = $this->createQueryBuilder('c');
return $qb
->select('count(c.id)')
->where('c.user.id = :userid')
->setParameter('userid', $userId)
->getQuery()
->getSingleScalarResult();
这不应该工作吗?目前,为此,我正在查询构建器中进行手动连接,但我认为没有必要。或者学说不会自动解决查询构建器级别的连接?
错误是:
类 App\Entity\Child 没有名为 user.id 的字段或关联
编辑:我可能还可以将普通的 $id_user 包含在 Person.class 中。但由于对象已经存在,我没有在任何实体类中这样做。如果这是一个好的做法,我会这样做。至少摆脱加入。