我正在使用类比来使我的观点更容易理解。 让我们想象一下图书馆。我们有书籍,书籍收藏和用户。 书籍,收藏品和用户是我的实体。
我已在三个实体之间建立了这些关系,到目前为止,似乎很好。
问题是:如何显示给定集合的图书列表,以及当前用户是否已阅读这些图书?
我从这份书籍清单请求开始;我不知道如何为用户添加子请求或类似内容:
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();
}
}
非常感谢!
答案 0 :(得分:0)
感谢Coussinsky找到了答案。
它最终比我预期的要复杂得多:)
首先,我们需要链接到书籍的用户的getter / setter。 这可以通过使用控制台更新book实体来完成,例如:
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 %}