générateur de requêtes de nombreux de nombreux de la relation
Je suis confronté à quelques problèmes avec le générateur de requêtes dans nombreux de nombreux de la relation.
J'ai une entité de la Société qui ont subcompanies ainsi, j'ai donc:
class Company {
private $id;
/**
* @var ArrayCollection
*
* @ORM\ManyToMany(targetEntity="Company")
* @ORM\JoinTable(name="company_relation",
* joinColumns={
* @ORM\JoinColumn(name="id", referencedColumnName="id")
* },
* inverseJoinColumns={
* @ORM\JoinColumn(name="subcompany", referencedColumnName="id")
* }
* )
*/
private $ChildrenCompany;
[...]
}
Alors je suis en train de faire un générateur de requête qui renvoie les entreprises qui ont porté subcompanies (par exemple subcompany avec l'id 5). J'ai essayé de deux façons:
méthode A)
$query->select ('c');
$query->from(MyBundle:Company, 'c');
$query->leftJoin('c.ChildrenCompany','j');
$query->where('j.subcompany = 5');
Il ne fonctionne pas et me donner le message d'erreur: Classe de l'Application\Sademer\CoreBundle\Entity\Société n'a pas de champ ou d'une association nommée subcompany
méthode B)
$query->select ('c');
$query->from(MyBundle:Company, 'c');
$query->where('j.ChildrenCompany = 5');
Il ne fonctionne pas et me donner l'erreur: Invalid PathExpression. StateFieldPathExpression ou SingleValuedAssociationField prévu.
Merci!!! 😉
J'instancie le générateur de requête comme: $query = $this->getModelManager()->createQuery(MyBundle:Société, "entité");
OriginalL'auteur Angel | 2013-04-15
Vous devez vous connecter pour publier un commentaire.
Vous devez simplement être en mesure de vérifier sur j.id:
Si vous regardez l'erreur que vous aviez première fois, vous pouvez voir que vous avez un exemple de Compagnie qui signifie que vous devriez interroger sur les domaines. Lorsque vous rejoignez un alias vous ensuite à écrire des requêtes à l'encontre de l'entité cible, pas la table de jointure.
Vous pouvez créer une entité pour la table de jointure si vous le souhaitez, vous pouvez alors définir de nombreuses à un les relations sur cette entité à les deux tables qui ont une relation plusieurs-à-plusieurs. Ceci est utile si vous avez besoin d'avoir une autre colonne sur le de nombreux de nombreux de la table.
OriginalL'auteur Luke
Il y a une autre méthode sans l'aide de l'instruction de jointure, vous devez simplement ajouter le code suivant pour extraire les entreprises avec les subcompanyId = 5
Et de la doctrine va faire le travail dur pour vous .
Avoir une belle codage de temps !
OriginalL'auteur sami boussacsou
De faire comme ceci
Et dans votre fonction
OriginalL'auteur ivan.proskuryakov