Bonjour, je travail en équipe sur le même projet que YoshV dans le cadre de notre BTS. Moi je travail sur une partie gestion de la vente. et je me confronte depuis plus de 2 semaine sur un problème super énervant. J'ai demandé à nos profs d'informatique et il n'ont pas réussi à m'aider. Donc vous êtes mon dernier espoir
Donc je vous explique très concrètement :
Voici la requête que je doit exécuter :
SELECT livre.code_ean, livre.idlivre, livre.titre
FROM eleve
INNER JOIN classe
ON eleve.classe_idclasse=classe.idclasse
INNER JOIN eleve_has_options
ON eleve_has_options.eleve_ideleve=eleve.ideleve
INNER JOIN options
ON eleve_has_options.options_idoption=options.idoption
INNER JOIN classe_has_options
ON classe_has_options.classe_idclasse=eleve.classe_idclasse
AND classe_has_options.options_idoption=eleve_has_options.options_idoption
INNER JOIN livre
ON classe_has_options.livre_idlivre=livre.idlivre
WHERE eleve.ideleve = 5
UNION
SELECT livre.code_ean, livre.idlivre, livre.titre
FROM fcpe.eleve
INNER JOIN classe
ON eleve.classe_idclasse = classe.idclasse
INNER JOIN classe_has_livre
ON classe_has_livre.classe_idclasse = eleve.classe_idclasse
INNER JOIN livre
ON classe_has_livre.livre_idlivre = livre.idlivre
WHERE eleve.ideleve = 5
Et donc cette requête fonctionne très bien sous mysql workbench. moi mon principale problème c'est que dans mes entity j'ai des tables qui ont été générer avec des relations ManytoMany etc.. avec des joinsColumns etc.. et c'est mon problème voici mon entity Eleve :
<?php
namespace LGB\BourseLivresBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
/**
* LGB\BourseLivresBundle\Entity\Eleve
*
* @ORM\Table(name="eleve")
* @ORM\Entity(repositoryClass="LGB\BourseLivresBundle\Entity\EleveRepository")
*/
class Eleve
{
/**
* @var integer $ideleve
*
* @ORM\Column(name="ideleve", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $ideleve;
/**
* @var string $nom
*
* @ORM\Column(name="nom", type="string", length=30, nullable=false)
*/
private $nom;
/**
* @var string $prenom
*
* @ORM\Column(name="prenom", type="string", length=30, nullable=false)
*/
private $prenom;
/**
* @var date $dateNaissance
*
* @ORM\Column(name="date_naissance", type="date", nullable=false)
*/
private $dateNaissance;
/**
* @var Options
*
* @ORM\ManyToMany(targetEntity="Options", inversedBy="eleveeleve")
* @ORM\JoinTable(name="eleve_has_options", // ici pas moyen de pouvoir accéder à cette table //
* joinColumns={
* @ORM\JoinColumn(name="eleve_ideleve", referencedColumnName="ideleve")
* },
* inverseJoinColumns={
* @ORM\JoinColumn(name="options_idoption", referencedColumnName="idoption")
* }
* )
*/
private $optionsoption;
/**
* @var Classe
*
* @ORM\ManyToOne(targetEntity="Classe")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="classe_idclasse", referencedColumnName="idclasse")
* })
*/
private $classeclasse;
/**
* @var Parents
*
* @ORM\ManyToOne(targetEntity="Parents")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="parent_idparent", referencedColumnName="idparent")
* })
*/
private $parentparent;
public function __construct()
{
$this->optionsoption = new \Doctrine\Common\Collections\ArrayCollection();
}
J'arrive pas à accéder à cette table :
/**
* @var Options
*
* @ORM\ManyToMany(targetEntity="Options", inversedBy="eleveeleve")
* @ORM\JoinTable(name="eleve_has_options", // ici pas moyen de pouvoir accéder à cette table //
* joinColumns={
* @ORM\JoinColumn(name="eleve_ideleve", referencedColumnName="ideleve")
* },
* inverseJoinColumns={
* @ORM\JoinColumn(name="options_idoption", referencedColumnName="idoption")
* }
* )
*/
private $optionsoption;
voici la requete que j'ai essayer de faire pour voir si j'arrivais à accéder aux champs de la table eleve_has_options :
return $this->getEntityManager()
->createQuery('SELECT e FROM LGBBourseLivresBundle:Eleve e INNER JOIN eleve_has_options b ')
->getArrayResult();
Voici l’erreur que j'ai suite à cet requête ci-dessus :
[Semantical Error] line 0, col 73 near 'b ': Error: Identification Variable eleve_has_options used in join path expression but was not defined before.
500 Internal Server Error - QueryException
J'ai vraiment besoin de votre aide vous êtes mon dernier recours. Merci beaucoup si il vous manque la moindre précision n’hésitez pas

Bonjour, je travail en équipe sur le même projet que YoshV dans le cadre de notre BTS. Moi je travail sur une partie gestion de la vente. et je me confronte depuis plus de 2 semaine sur un problème super énervant. J'ai demandé à nos profs d'informatique et il n'ont pas réussi à m'aider. Donc vous êtes mon dernier espoir :oops:
Donc je vous explique très concrètement :
Voici la requête que je doit exécuter :
[sql]SELECT livre.code_ean, livre.idlivre, livre.titre
FROM eleve
INNER JOIN classe
ON eleve.classe_idclasse=classe.idclasse
INNER JOIN eleve_has_options
ON eleve_has_options.eleve_ideleve=eleve.ideleve
INNER JOIN options
ON eleve_has_options.options_idoption=options.idoption
INNER JOIN classe_has_options
ON classe_has_options.classe_idclasse=eleve.classe_idclasse
AND classe_has_options.options_idoption=eleve_has_options.options_idoption
INNER JOIN livre
ON classe_has_options.livre_idlivre=livre.idlivre
WHERE eleve.ideleve = 5
UNION
SELECT livre.code_ean, livre.idlivre, livre.titre
FROM fcpe.eleve
INNER JOIN classe
ON eleve.classe_idclasse = classe.idclasse
INNER JOIN classe_has_livre
ON classe_has_livre.classe_idclasse = eleve.classe_idclasse
INNER JOIN livre
ON classe_has_livre.livre_idlivre = livre.idlivre
WHERE eleve.ideleve = 5
[/sql]
Et donc cette requête fonctionne très bien sous mysql workbench. moi mon principale problème c'est que dans mes entity j'ai des tables qui ont été générer avec des relations ManytoMany etc.. avec des joinsColumns etc.. et c'est mon problème voici mon entity Eleve :
[php]<?php
namespace LGB\BourseLivresBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
/**
* LGB\BourseLivresBundle\Entity\Eleve
*
* @ORM\Table(name="eleve")
* @ORM\Entity(repositoryClass="LGB\BourseLivresBundle\Entity\EleveRepository")
*/
class Eleve
{
/**
* @var integer $ideleve
*
* @ORM\Column(name="ideleve", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $ideleve;
/**
* @var string $nom
*
* @ORM\Column(name="nom", type="string", length=30, nullable=false)
*/
private $nom;
/**
* @var string $prenom
*
* @ORM\Column(name="prenom", type="string", length=30, nullable=false)
*/
private $prenom;
/**
* @var date $dateNaissance
*
* @ORM\Column(name="date_naissance", type="date", nullable=false)
*/
private $dateNaissance;
/**
* @var Options
*
* @ORM\ManyToMany(targetEntity="Options", inversedBy="eleveeleve")
* @ORM\JoinTable(name="eleve_has_options", // ici pas moyen de pouvoir accéder à cette table //
* joinColumns={
* @ORM\JoinColumn(name="eleve_ideleve", referencedColumnName="ideleve")
* },
* inverseJoinColumns={
* @ORM\JoinColumn(name="options_idoption", referencedColumnName="idoption")
* }
* )
*/
private $optionsoption;
/**
* @var Classe
*
* @ORM\ManyToOne(targetEntity="Classe")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="classe_idclasse", referencedColumnName="idclasse")
* })
*/
private $classeclasse;
/**
* @var Parents
*
* @ORM\ManyToOne(targetEntity="Parents")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="parent_idparent", referencedColumnName="idparent")
* })
*/
private $parentparent;
public function __construct()
{
$this->optionsoption = new \Doctrine\Common\Collections\ArrayCollection();
}[/php]
J'arrive pas à accéder à cette table :
[php] /**
* @var Options
*
* @ORM\ManyToMany(targetEntity="Options", inversedBy="eleveeleve")
* @ORM\JoinTable(name="eleve_has_options", // ici pas moyen de pouvoir accéder à cette table //
* joinColumns={
* @ORM\JoinColumn(name="eleve_ideleve", referencedColumnName="ideleve")
* },
* inverseJoinColumns={
* @ORM\JoinColumn(name="options_idoption", referencedColumnName="idoption")
* }
* )
*/
private $optionsoption;[/php]
voici la requete que j'ai essayer de faire pour voir si j'arrivais à accéder aux champs de la table eleve_has_options :
[php] return $this->getEntityManager()
->createQuery('SELECT e FROM LGBBourseLivresBundle:Eleve e INNER JOIN eleve_has_options b ')
->getArrayResult();[/php]
Voici l’erreur que j'ai suite à cet requête ci-dessus :
[php][Semantical Error] line 0, col 73 near 'b ': Error: Identification Variable eleve_has_options used in join path expression but was not defined before.
500 Internal Server Error - QueryException[/php]
J'ai vraiment besoin de votre aide vous êtes mon dernier recours. Merci beaucoup si il vous manque la moindre précision n’hésitez pas :)