A voir également:
- Symfony innerjoin
- Probleme symfony - Forum Webmastering
- Cascade symfony ✓ - Forum PHP
- QrReader symfony - Forum PHP
- Affichage symfony - Forum PHP
- Misere avec symfony - Forum Webmastering
2 réponses
ThEBiShOp
Messages postés
8378
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
8 février 2021
1 566
12 juil. 2018 à 14:34
12 juil. 2018 à 14:34
Salut,
Tu utilises quelle version de Symfony et de Doctrine ?
Tu as un message d'erreur ? Si oui, lequel ?
Pour commencer il y a une chose qui saute aux yeux, c'est que tu n'as pas compris la logique de Doctrine. Son but est de s'éloigner d'un logique base de donnée et de permettre de manipuler non pas des tables, comme en SQL, mais des objets.
Il en résulte que ton entité n'est pas une table, mais un type d'objet, comme par exemple Table, qui pourra avoir une relation avec une autre entité Matiere, et dans mon entité Table, la relation sera portée par une propriété qui s'appellera $matiere, et non pas $matiereId.
Tu dois vraiment oublier ce qui se passe derrière, pense juste que tu manipules des objets.
Malgré tout si ton entité est correctement déclarée, tu pourras l'interroger.
D'ailleurs pour requête aussi simple, tu n'as pas besoin d'écrire de requête dans ton repository, tu peux accéder directement aux éléments Table2 liés à Table1, pour cela tu dois ajouter au moins un getter dans Table1 :
Ce getter devra te retourner une collection de Table2... C'est pour ça qu'on utilise le pluriel pour le repérer plus facilement dans le cas d'un OneToMany
Tu auras besoin par la suite d'un setter...
De cette façon tu peux récupérer tes Table2 liés à Table1
Tu utilises quelle version de Symfony et de Doctrine ?
Tu as un message d'erreur ? Si oui, lequel ?
Pour commencer il y a une chose qui saute aux yeux, c'est que tu n'as pas compris la logique de Doctrine. Son but est de s'éloigner d'un logique base de donnée et de permettre de manipuler non pas des tables, comme en SQL, mais des objets.
Il en résulte que ton entité n'est pas une table, mais un type d'objet, comme par exemple Table, qui pourra avoir une relation avec une autre entité Matiere, et dans mon entité Table, la relation sera portée par une propriété qui s'appellera $matiere, et non pas $matiereId.
Tu dois vraiment oublier ce qui se passe derrière, pense juste que tu manipules des objets.
Malgré tout si ton entité est correctement déclarée, tu pourras l'interroger.
D'ailleurs pour requête aussi simple, tu n'as pas besoin d'écrire de requête dans ton repository, tu peux accéder directement aux éléments Table2 liés à Table1, pour cela tu dois ajouter au moins un getter dans Table1 :
public function getTable2() { return $this->table2; }
Ce getter devra te retourner une collection de Table2... C'est pour ça qu'on utilise le pluriel pour le repérer plus facilement dans le cas d'un OneToMany
Tu auras besoin par la suite d'un setter...
De cette façon tu peux récupérer tes Table2 liés à Table1
$table2 = $table1->getTable2();
15 juil. 2018 à 19:07
Merci pour votre réponse et désoler pour mon réponse tardive, en fait, je sais bien qu'il faut jamais toucher BDD directement, mais, le projet que je travaille, je suis obligé de faire comme ça.
Le projet est complexe, je vous ai données juste une exemple (qui ne fonctionne pas malheureusement).
Voici l'erreur que je reçois "[Semantical Error] line 0, col 72 near 't1': Error: Class TEST\ServiceBundle\Entity\Table2 has no association named table1_id"
Cordialement,
16 juil. 2018 à 08:23
16 juil. 2018 à 21:05
Malheureusement ça marche pas encore.
Je reçois la même erreur.
[Semantical Error] line 0, col 71 near 't1': Error: Class TEST\ServiceBundle\Entity\Table2 has no association named table1Id
Je pense que ça peux venir @ORM\ManyToOne(targetEntity="ServiceBundle\Entity\Table1", inversedBy="table2Id")
ou il y a un problème par rapport foreign key