我在多对多关系中遇到了查询生成器的一些问题。
我有一个实体公司,它也有子公司,所以我有:
class Company {
private $id;
/**
* @var ArrayCollection
*
* @ORM\ManyToMany(targetEntity="Company")
* @ORM\JoinTable(name="company_relation",
* joinColumns={
* @ORM\JoinColumn(name="id", referencedColumnName="id")
* },
* inverseJoinColumns={
* @ORM\JoinColumn(name="subcompany", referencedColumnName="id")
* }
* )
*/
private $ChildrenCompany;
[...]
}
然后我正在尝试创建一个查询构建器,它返回已确定子公司的公司(例如 id 为 5 的子公司)。我尝试了两种方式:
方法一)
$query->select ('c');
$query->from(MyBundle:Company, 'c');
$query->leftJoin('c.ChildrenCompany','j');
$query->where('j.subcompany = 5');
它不起作用并给我错误:Class Application\Sademer\CoreBundle\Entity\Company has no field or association named subcompany
方法 B)
$query->select ('c');
$query->from(MyBundle:Company, 'c');
$query->where('j.ChildrenCompany = 5');
它不起作用并给我错误:无效的 PathExpression。需要 StateFieldPathExpression 或 SingleValuedAssociationField。