0

私は自分の主張をより理解しやすくするためにアナロジーを使用しています。図書館を想像してみましょう。書籍、書籍のコレクション、ユーザーがいます。書籍、コレクション、ユーザーは私の実体です。

  • コレクションには多くの本があります(OnetoMany、双方向)
  • 本は複数のユーザーによって読まれた可能性があります(多対多、双方向)

私は3つのエンティティの間にこれらの関係を構築しましたが、これまでのところ、問題はないようです。

質問は、特定のコレクションの本のリストを表示する方法と、現在のユーザーがそれらの本を読んだかどうかです。

私は本のリストに対するこの要求から始めています。ユーザー向けにサブリクエストなどを追加する方法がわかりません。

class CollectionRepository extends EntityRepository {
    public function getCollectionWithBooks($collectionName) {
        $qb = $this->createQueryBuilder('c')
           ->leftJoin('c.books', 'b')
           ->where('c.urlname = :collectionName')
                ->setParameter('collectionName', $collectionName)
           ->addSelect('b');

        return $qb->getQuery()
           ->getSingleResult();

    }
}

どうもありがとうございます!

4

1 に答える 1

0

Coussinskyのおかげで答えを見つけました。

最終的には、私が予想していたよりもはるかに複雑ではありませんでした:)

まず、本にリンクされているユーザーのゲッター/セッターが必要です。これは、次のようなコンソールでブックエンティティを更新することで実行できます。

php app/console doctrine:generate:entities appLibraryBundle:Book

arrayCollectionを返すgetUsers()メソッドがあります。

小枝の表示では、次のようなことができます。

{% for book in collectionWithBooks.books %}
    {% if app.user in book.users %}You have read this book.{% endif %}
{% endfor %}
于 2012-09-26T08:44:24.020 に答える