Limit amount of records retrieved when using Doctrine DQL in Symfony2
Asked Answered
H

1

35

I have the following query:

   $latestcontent = $em->createQuery('
            SELECT c.title, c.content, c.lastedit, a.firstname, a.surname
            FROM ShoutMainBundle:Content c, ShoutMainBundle:Admin a
            WHERE c.author = a.id
            ORDER BY c.lastedit ASC'
            );

What I need to do, is limit the amount of records returned from this query. However, when I add LIMIT 10 to the SQL query, it returns this error:

Error: Expected end of string, got 'LIMIT'.

So, I had a look and found that you could do add ->limit(10) to the code (after the query). But this then throws up this PHP error:

Fatal error: Call to undefined method Doctrine\ORM\Query::limit() in C:\wamp\www\src\Shout\AdminBundle\Controller\DefaultController.php on line 22

What am I doing wrong?

Hephzipa answered 13/9, 2011 at 15:5 Comment(0)
G
72

There is no statement like LIMIT for DQL currently, as far as I know.

You have to use Query::setMaxResults().

Guernica answered 13/9, 2011 at 15:12 Comment(4)
That's worked, thank you. It's confused me a slight bit as on this page it says there is a limit command (which was what i was using): doctrine-project.org/documentation/manual/1_1/hu/…. But your way works, thank you :)Hephzipa
@mickburkejnr: The link you provided in your comment is for Doctrine 1.2. Symfony2 is using Doctrine 2.1, so the documentation you read doesn't match the version you are using. This link is for the Doctrine 2.1 documentation.Jaddo
@matt is right, the link I provided was 1.1 (I didn't know). This is the one thing that annoys me most about the new Symfony. The documentation is all over the place.Hephzipa
Link for Doctrine 2.6: doctrine-project.org/projects/doctrine-orm/en/2.6/reference/… (when using QueryBuilder)Liquesce

© 2022 - 2024 — McMap. All rights reserved.