Учение Symfony 4 многие ко многим с findby -> Колонка не найдена: 1054 - PullRequest
0 голосов
/ 14 октября 2018

Я пытаюсь заставить многих многих присоединиться к доктрине findBy ()

$articles = $entityManager->getRepository(Articles::class)
->findBy(['rubriquesrubriques'=>$id],['idarticles'=>"ASC"]);

Но я получаю

An exception occurred while executing 
'SELECT t0.idarticles AS idarticles_1, 
t0.thetitle AS thetitle_2, t0.theslug AS theslug_3, t0.thedescription AS 
thedescription_4, t0.thedate AS thedate_5, t0.users_idusers AS users_idusers_6 
FROM articles t0 WHERE
 articles_has_rubriques.rubriques_idrubriques = ? 
ORDER BY t0.idarticles ASC' with params ["2"]:
SQLSTATE[42S22]: Column not found: 1054 Champ
 'articles_has_rubriques.rubriques_idrubriques' inconnu dans where clause

В моей БД существует столбец article_has_rubriques.rubriques_idrubriques, но я не вижу ВНУТРЕННЕГО СОЕДИНЕНИЯ!

Когда я делаю многие из многих с помощью простого Find ():

$articles = $entityManager->getRepository(Articles::class)->find($id);

Запрос правильный!

SELECT t0.idrubriques AS idrubriques_1, 
t0.thertitle AS thertitle_2 
FROM 
rubriques t0 
INNER JOIN articles_has_rubriques ON t0.idrubriques =
articles_has_rubriques.rubriques_idrubriques 
WHERE articles_has_rubriques.articles_idarticles = ?

невозможно выполнить мой many2many запрос с помощью findBy в версии 4.1.6 Symfony???

Это мое отношение ORM:

В сущности Rubriques.php :

 /**
 * @var \Doctrine\Common\Collections\Collection
 *
 * @ORM\ManyToMany(targetEntity="Articles", mappedBy="rubriquesrubriques")
 */
private $articlesarticles;

В сущности Articles.php

/**
 * @var \Doctrine\Common\Collections\Collection
 *
 * @ORM\ManyToMany(targetEntity="Rubriques", inversedBy="articlesarticles")
 * @ORM\JoinTable(name="articles_has_rubriques",
 *   joinColumns={
 *     @ORM\JoinColumn(name="articles_idarticles", referencedColumnName="idarticles")
 *   },
 *   inverseJoinColumns={
 *     @ORM\JoinColumn(name="rubriques_idrubriques", referencedColumnName="idrubriques")
 *   }
 * )
 */
private $rubriquesrubriques;

Большое спасибо

1 Ответ

0 голосов
/ 14 октября 2018

Мой вопрос был глупым:

У меня есть простой способ сделать это:

$rubriqueActu = $entityManager->getRepository(Rubriques::class)->find($id);
$articles = $rubriqueActu->getArticlesarticles();

SQL:

SELECT t0.idarticles AS idarticles_1, t0.thetitle AS thetitle_2, 
 t0.theslug AS theslug_3, t0.thedescription AS thedescription_4,
 t0.thedate AS thedate_5, t0.users_idusers AS users_idusers_6
FROM articles t0 INNER JOIN articles_has_rubriques 
ON t0.idarticles = articles_has_rubriques.articles_idarticles 
WHERE articles_has_rubriques.rubriques_idrubriques = ?
...