Skip to content

Loading…

DDC-2318: Count all element #3022

Closed
doctrinebot opened this Issue · 2 comments

2 participants

@doctrinebot

Jira issue originally created by user xzan:

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.

@doctrinebot

Comment created by @ocramius:

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.

@doctrinebot

Issue was closed with resolution "Invalid"

@Ocramius Ocramius was assigned by doctrinebot
@doctrinebot doctrinebot closed this
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.