[DDC-2318] Count all element Created: 25/Feb/13  Updated: 25/Feb/13  Resolved: 25/Feb/13

Status: Closed
Project: Doctrine 2 - ORM
Component/s: None
Affects Version/s: None
Fix Version/s: None
Security Level: All

Type: New Feature Priority: Minor
Reporter: Benjamin Assignee: Marco Pivetta
Resolution: Invalid Votes: 0
Labels: None


 Description   

Hello,

I'm sorry if it is not the right place to ask and suggest but I was not sure where to contact you.

I have been trying to make a pagination of articles without using DQL. For me, it defies the purpose of the ORM to do DQL for things like pagination.

After some research I found the method findBy() which allows me to select X element starting at position Y.
Yet, to know the number of pages, I needed to count the number of elements in my database and I didn't find any count() method in the Entity Repository.

I was wondering why there is no count method ?

Moreover, I did my own entity Repository that extends the default one to have a count method like this :

use Doctrine\ORM\EntityRepository;

class CountableEntityRepository extends EntityRepository {
    
    /**
     * returns the number of entity's rows
     * @return int
     */
    public function count() {
        $query = $this->createQueryBuilder('e')->select('count(e)')->getQuery();
        return $query->getSingleScalarResult();
    }
}

as I am new to Doctrine I don't know if this is a good solution, if it is not, could you add a count method to the repository ?

Thank you very much.

Regards,
Benjamin.



 Comments   
Comment by Marco Pivetta [ 25/Feb/13 ]

Heya!

First of all, consider that this is an issue tracker, not a Q&A platform (use StackOverflow, the mailing list or IRC for that).

Anyway, the use case seems reasonable to me, but consider that Doctrine comes with a powerful paginator ( http://docs.doctrine-project.org/en/latest/tutorials/pagination.html )

I don't think this logic fits repositories by default.

Generated at Wed Jul 30 05:14:01 UTC 2014 using JIRA 6.2.3#6260-sha1:63ef1d6dac3f4f4d7db4c1effd405ba38ccdc558.