Autor Zpráva
DevsPetr
Profil
Dobry den. Potreboval bych pomoct jak dat dohromady dve DQL queries s pouzitim left join pro review .

Tenhle DQL je z meho BookRepository:

   public function getLatest ($limit, $offset) {
        $queryBuilder = $this->createQueryBuilder('entry');
        $queryBuilder->orderBy(
            'entry.dateTimeStamp', 'DESC')
            ->setFirstResult($offset)
            ->setMaxResults($limit);
        $query = $queryBuilder->getQuery();
        return $query->getResult();

A tenhle z ReviewRepository:

   public function getDayRating ($limit, $offset) {
        $queryBuilder = $this->createQueryBuilder('best_entry');
        $queryBuilder
            ->select('MAX(best_entry.dateAdded) as last_day_entry'
                , 'AVG(best_entry.rating) as avg_rating'
                , 'IDENTITY(best_entry.book) as bookID')
            ->groupBy('best_entry.book')
            ->setFirstResult($offset)
            ->setMaxResults($limit);
        $query = $queryBuilder->getQuery();
        return $query->getResult();
    }

Book.php
    /**
     * @var \Doctrine\Common\Collections\ArrayCollection
     * @ORM\OneToMany(targetEntity="Literary\BookBundle\Entity\Review", mappedBy="book")
     */
    protected $reviews;

Review.php
    /**
     * @var \Literary\BookBundle\Entity\Book
     * @ORM\ManyToOne(targetEntity="Literary\BookBundle\Entity\Book", inversedBy="reviews")
     * @ORM\JoinColumn(name="book", referencedColumnName="id")
     */
    private $book;

Potreboval bych vytvorit v Repository(Book nebo Review) funkci ktera mi ukaze vsechny knihy s pouzitim $limit a $offset a s pouzitim left join mit informace o raiting te knihy jako napriklad prumer z rating a informaci kdy byl naposledy vlozen posledni prispevek.
Jako spojeni mezi knihou a rating je id knihy a best_entry.book v rating

Predem moc dekuji za pomoc.


Moderátor Kajman: Vkládej prosím kódy mezi značky [pre] a [/pre] (stačí kliknout na ).
DevsPetr
Profil
Jeste pridam ze SQL query pro toto je

SELECT 
Book.id as bookid, Book.author, Book.genre,Book.title, Book.released_date
, Book.isbn, Book,synopsis,Book,addedBy, Book.date_time_stamp,
ROUND (AVG(Rating.rating),1) as avg_rating,
MAX(Rating.date_added) AS lastaddeddate
FROM assessment_book AS Book
LEFT JOIN assessment_review as Rating on Book.id = Rating.book
group by Book.id
ORDER BY Book.id
LIMIT 6 OFFSET 0;

Stale vsak nevim, jak z toho vytvorit DQL.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0