0

私は Symfony の初心者です (SF5 を使用します)。コメント テーブルがあり、その中には filmId 列があります。この列は、ご想像のとおり、フィルム テーブルのプライマリ ID と型関係があります。今のところ、ID に従ってページ上の映画を取得し、映画の ID に関係なくすべてのコメントを取得します。

/**
 * @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
 ]);
}

$commentsをdump()して、もう少し調べてみます。filmId は PersistentCollection 型であることがわかりました。各映画に固有のコメントを filmId に従って取得したいと思います。

$comments = $comRepo-> findBy($id)でそれらを取得しようとしました(GET で取得した映画の ID が 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);

しかし、次のエラーが表示されます。

[Semantical Error] line 0, col 67 near 'filmId =: fi': Error: Invalid PathExpression. StateFieldPathExpression または SingleValuedAssociationField が必要です。

どうしたの ?filmId が :fi として定義されるのはいつですか? また、filmId に従って正しいリクエストを作成する方法を教えてください。

4

1 に答える 1