2017-05-09 1 views
0

J'ai lu quelques documentations sur les ORM & Symfony, mais les Anglais ne sont pas ma langue maternelle et peut-être me manque quelque chose :) Je vais juste faire une jointure entre réservation & spectacles Je cette erreur:problème avec entité relation

[Semantical Error] line 0, col 70 near 'r WHERE a.id': Error: Class AppBundle\Entity\Reservation has no association named Reservation

Mes entités

class Reservation 
{ 
    /** 
    * @ORM\ManytoOne (targetEntity="AppBundle\Entity\Spectacles", inversedBy="id") 
    * @ORM\JoinColumn(name="id", referencedColumnName="id") 
    */ 
    private $spectacle; 
} 



class Spectacles 
{ 
    /** 
    * @var int 
    * 
    * @ORM\Column(name="id", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    * @ORM\OneToMany(targetEntity="AppBundle\Entity\Reservation", mappedBy="spectacle") 
    * 
    */ 
    private $id; 
} 

Mon dépôt

class ReservationRepository extends \Doctrine\ORM\EntityRepository 
{ 
    public function FindHowMunchRemains($id) 
    { 

     return $this->createQueryBuilder('a') 
       ->join('a.Reservation','r') 
       ->where('a.id=:id') 
       ->setParameter('id',$id) 
       ->getQuery() 
       ->getResult(); 


    } 
} 

EDIT:

Je suis perdu avec ORM, (je pense que c'est mon gros problème avec symfony ... J'essaie de lire doc mais rien il est clair qu'il est peut-être pas ma langue maternelle.

Je veux créer ce schéma pourriez-vous m'aider avec le résultat du code source uniquement sur la clé?

Voir schéma ici sous

SCHEMA DB

+0

Pouvez-vous ajouter à la question que voulez-vous accomplir? – Akkusativobjekt

+1

Il semble que vous joigniez 'Reservation' (en faisant' -> join ('a.Reservation', 'r') ') à' Reservation' (comme 'ReservationRepository'). Vous pouvez soit rejoindre 'a.spectacle' ou faire quelque chose comme' a.reservation' mais dans 'SpectacleRepository', selon ce que vous essayez de faire. –

+0

Merci Jakub, j'essaie avec Spectacle Repository (c'est logique) mais j'ai une erreur comme l'erreur précédente. [Erreur sémantique] ligne 0, col 69 près de 'r WHERE a.id': Erreur: La classe AppBundle \ Entity \ Spectacles n'a pas d'association nommée Reservation @Akkusativobjekt J'essaye simplement de faire une jointure pour comprendre –

Répondre

0

Votre relation est pas valide, devrait être:

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

    /** 
    * @ORM\ManyToOne(targetEntity="AppBundle\Entity\Spectacle", inversedBy="reservations") 
    */ 
    private $spectacle; 
} 



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

    /** 
    * @ORM\OneToMany(targetEntity="AppBundle\Entity\Reservation", mappedBy="spectacle") 
    */ 
    private $reservations; 
} 

Dans d'autre part votre requête est pas valide. Exactement ce que tu veux obtenir?

+0

Merci pour votre soutien, j'ajoute le schéma que je veux. J'espère comprendre comment ce travail; / –