2016-04-01 8 views
2

で「ユーザー」、「イベント」「typeEventsの」リポジトリ内の特定の要求を構築することはできませんex:type = "Festival")。 同様に、ユーザーエンティティは、EventおよびtypeEventsという別のバンドルにあります。これは問題ではありません。私は(1場所でのユーザーの一覧を取得したいと思い、私は3つのテーブルを持っているquerybuilder

Entityの1つでは、manyToMany関係があります。このクエリビルダのリクエストはできません。

User.php:

class User extends BaseUser 
{ 

    /** 
    * @var integer 
    * 
    * @ORM\Column(name="id", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    protected $id; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="pseudo", type="string", length=30, nullable=true) 
    */ 
    private $pseudo; 

    /** 
    * @ORM\Column(name="name", type="string", length=255) 
    * 
    * @Assert\NotBlank(message="Please enter your name.", groups={"Registration", "Profile"}) 
    * @Assert\Length(
    *  min=3, 
    *  max=255, 
    *  minMessage="The name is too short.", 
    *  maxMessage="The name is too long.", 
    *  groups={"Registration", "Profile"} 
    *) 
    */ 
    private $name; 

    /** 
    * @var ArrayCollection $events 
    * @ORM\OneToMany(targetEntity="BISSAP\BenevolesBundle\Entity\Events", mappedBy="user", cascade={"persist", "remove", "merge"}) 
    */ 
    private $events; 
    [...] 

Events.php:

class Events 
{ 
    /** 
    * @var integer 
    * 
    * @ORM\Column(name="id", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    private $id; 

    /** 
    * 
    * @ORM\ManyToOne(targetEntity="TypeEvents", inversedBy="events", cascade={"persist"}) 
    * 
    */ 
    private $typeEvents; 

    /** 
    * 
    * @ORM\ManyToOne(targetEntity="GenreEvents", inversedBy="events", cascade={"persist"}) 
    * 
    */ 
    private $genreEvents; 

    /** 
    * 
    * @ORM\ManyToOne(targetEntity="BISSAP\UserBundle\Entity\User", inversedBy="events", cascade={"persist"}) 
    * 
    */ 
    private $user; 
    [...] 

TypeEvents.php:

class TypeEvents 
{ 
    /** 
    * @var integer 
    * 
    * @ORM\Column(name="id", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    private $id; 

    /** 
    * @var ArrayCollection $events 
    * @ORM\OneToMany(targetEntity="Events", mappedBy="typeEvents", cascade={"persist", "remove", "merge"}) 
    */ 
    private $events; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="type", type="string", length=255) 
    */ 
    public $type; 
    [...] 

そうでuserRepository私がしようとしている:

public function findUserEvent() 
    { 
     $qb = $this 
      ->createQueryBuilder('u') 
      ->leftJoin('u.events', 'ev') 
      ->addSelect('ev') 
      ->where('BISSAPBenevolesBundle:TypeEvents.type = :type') 
      ->setParameter('type', 'Festival') 
     ; 

     return $qb->getQuery()->getResult(); 
    } 

そして、私はこのエラーを取得する:[Semantical Error] line 0, col 78 near 'BISSAPBenevolesBundle:TypeEvents.type': Error: 'BISSAPBenevolesBundle:TypeEvents' is not defined.

答えて

2

はして試してみてください。

public function findUserEvent() 
    { 
     $qb = $this 
      ->createQueryBuilder('u') 
      ->leftJoin('u.events', 'ev') 
      ->leftJoin('ev.types', 'evt') 
      ->where('evt.type = :type') 
      ->setParameter('type', 'Festival') 
     ; 

     return $qb->getQuery()->getResult(); 
    } 

・ホープこのヘルプ

関連する問題