Problème avec une relation ManyToOne Semantical Error] line 0, col 89 near 'c ': Error: Class xxx\xxx\Entity\U
Bonjour,
Je tourne en rond en essayant d'ajouter une relation entre les tables user(id, , country_id, username) et country(id,name) . J'ai lancé les différentes commandes après avoir soigneusement ajouté les annotations et constructeur.
User :
/**
* @ORM\ManyToOne(targetEntity="Country", inversedBy="users")
* @ORM\JoinColumn(name="country_id", referencedColumnName="id")
*/
protected $country;
Country :
Code:
1 2 3 4 5 6 7 8 9 10
| /**
* @ORM\OneToMany(targetEntity="User", mappedBy="country")
*/
protected $users;
public function __construct()
{
$this->users = new ArrayCollection();
} |
J'ai ensuite lancé les commandes :
Code:
1 2 3
|
php app/console doctrine:generate:entities FrontBundle
php app/console doctrine:schema:update --force |
En resultat le code ci-dessous a été généré
User :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
/**
* Set country
*
* @param toto\FrontBundle\Entity\Country $country
*/
public function setCountry(\toto\FrontBundle\Entity\Country $country)
{
$this->country = $country;
}
/**
* Get country
*
* @return toto\FrontBundle\Entity\Country
*/
public function getCountry()
{
return $this->country;
} |
Country :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| /**
* Add users
*
* @param toto\FrontBundle\Entity\User $users
*/
public function addUser(\toto\FrontBundle\Entity\User $users)
{
$this->users[] = $users;
}
/**
* Get users
*
* @return Doctrine\Common\Collections\Collection
*/
public function getUsers()
{
return $this->users;
} |
Tout a l'air de bien fonctionner. Sauf que quand je lance la requête suivante :
Code:
1 2 3 4 5 6 7 8
| $query = $em->createQuery(
'SELECT u
FROM totoFrontBundle:User u
JOIN u.Country c
WHERE u.id = :id
'
)->setParameters(array('id'=> 1));
$user = $query->getResult(); |
J'ai systematiquement cette erreur :
Code:
1 2 3
|
[Semantical Error] line 0, col 89 near 'c
': Error: Class xxx\xxx\Entity\User has no association named Country |
Je vous remercie d'avance de votre aide.
Sibko1
En utilisant le createQueryBuilder ça marche mieux
$query = $em->createQueryBuilder('r')
->select('rzpp')
->where('rzpp.id = :id')
->from('totoFrontBundle:User', 'rzpp')
->leftJoin("rzpp.country", "p")
->setParameter('id', '1')
->getQuery();
:)