Mam następujący schemat bazy danych:Symfony2 Doktryna dostać losowy produkt z kategorii
table 'products'
id
category_id
i oczywiście tabeli kategorii, tylko z identyfikatorem.
Dane wyglądać tak:
Products
--------------------
| id | category_id |
--------------------
| 0 | 1 |
| 1 | 1 |
| 2 | 1 |
| 3 | 2 |
| 4 | 2 |
| 5 | 1 |
--------------------
chciałbym wybrać kategorię (na przykład kategoria 1), więc zaznaczyć wszystkie wiersze z tej kategorii w mojej klasie produktowej repozytorium:
return $this
->createQueryBuilder('u')
->andWhere('u.category = :category')
->setMaxResults(1)
->setParameter('category', $category->getId())
->getQuery()
->getSingleResult()
;
Jak mogę teraz wybrać losowy produkt? Ponadto: Czy można to rozwiązać poprzez relacje?
Mam OneToMany relacji pomiędzy podmiotami „Kategoria” i „Produkt”, więc mogę również dostać wszystkie produkty poprzez category-> getProducts() ...
Każda pomoc będzie bardzo przydatna, dzięki
Gdyby 'getResult' na zapytania count nie być' getSingleScalarResult'? – Machiel
Wiem, że ten fragment działał, gdy odpowiedziałam, ale od pewnego czasu nie tknąłem Doktryny, więc rzeczy mogły się zmienić. –
Oto funkcja gotowa do użycia: https://gist.github.com/Thinkscape/124d658e4076421c0516 –