多対多の関係で、クエリビルダーでいくつかの問題に直面しています。
サブ会社を持つエンティティ会社があるため、次のようになります。
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 のサブ会社) を持つ会社を返すクエリ ビルダーを作成しようとしています。私は2つの方法で試しました:
方法 A)
$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');
それは機能せず、次のエラーが表示されます: Invalid PathExpression. StateFieldPathExpression または SingleValuedAssociationField が必要です。