Я новичок в Symfony (используйте SF5). есть таблица комментариев, внутри которой находится столбец filmId, который имеет отношение типа с основным идентификатором, как вы можете себе представить, таблицы фильмов. На данный момент я получаю фильм на странице в соответствии с его идентификатором и получаю все комментарии независимо от идентификатора фильма:
/**
* @Route("/user/film/{id}", name="film")
*/
public function film(FilmRepository $repo, CommentRepository $comRepo, EntityManagerInterface $em, Request $req, $id)
{
$film = $repo->find($id);
$comments = $comRepo->findAll();
dump($comments);
return $this->render('film/film.html.twig', [
'controller_name' => 'FilmController',
'film' => $film,
'comments' => $comments
]);
}
I dump () $ comments чтобы узнать немного больше. Мне возвращается, что filmId имеет тип PersistentCollection. Я хотел бы получить комментарии, указанные c для каждого фильма в соответствии с filmId.
Я пытался получить их с помощью $ comments = $ comRepo-> findBy ($ id) ( так как идентификатор фильма, который я получаю в GET, - это то, что я хочу для filmId), он дает мне нераспознанное поле ошибка.
Следуя документации, я попытался создать пользовательский запрос, подобный этому:
//CommentRepository
public function findAllWithFilmId($filmId)
{
$em = $this->getEntityManager();
$query = $em->createQuery(
'SELECT c
FROM App\Entity\Comment c
WHERE c.filmId = :filmId'
)->setParameter('filmId', $filmId);
return $query->getResult();
}
//FilmController
$filmId = $id;
$comments = $this->getDoctrine()
->getRepository(Comment::class)
->findAllWithFilmId($filmId);
Но я получаю следующую ошибку:
[Семантическая ошибка] строка 0, столбец 67 рядом с 'filmId =: fi': Ошибка: неверное выражение пути , Ожидается StateFieldPathExpression или SingleValuedAssociationField.
Что не так? Когда filmId определяется как: fi? А как правильно создать запрос по FilmId?