use Doctrine\ORM\EntityRepository;
use Doctrine\ORM\Tools\Pagination\Paginator;
+use Pagerfanta\Adapter\DoctrineORMAdapter;
+use Pagerfanta\Pagerfanta;
class EntryRepository extends EntityRepository
{
/**
- * Retrieves unread entries for a user
+ * Retrieves unread entries for a user.
*
* @param int $userId
* @param int $firstResult
->leftJoin('e.user', 'u')
->where('e.isArchived = false')
->andWhere('u.id =:userId')->setParameter('userId', $userId)
- ->andWhere('e.isDeleted=false')
- ->orderBy('e.createdAt', 'desc')
+ ->orderBy('e.id', 'desc')
->getQuery();
$paginator = new Paginator($qb);
}
/**
- * Retrieves read entries for a user
+ * Retrieves read entries for a user.
*
* @param int $userId
* @param int $firstResult
->leftJoin('e.user', 'u')
->where('e.isArchived = true')
->andWhere('u.id =:userId')->setParameter('userId', $userId)
- ->andWhere('e.isDeleted=false')
- ->orderBy('e.createdAt', 'desc')
+ ->orderBy('e.id', 'desc')
->getQuery();
$paginator = new Paginator($qb);
}
/**
- * Retrieves starred entries for a user
+ * Retrieves starred entries for a user.
*
* @param int $userId
* @param int $firstResult
->leftJoin('e.user', 'u')
->where('e.isStarred = true')
->andWhere('u.id =:userId')->setParameter('userId', $userId)
- ->andWhere('e.isDeleted = false')
- ->orderBy('e.createdAt', 'desc')
+ ->orderBy('e.id', 'desc')
->getQuery();
$paginator = new Paginator($qb);
}
/**
- * Find Entries
+ * Find Entries.
*
* @param int $userId
* @param bool $isArchived
* @param bool $isStarred
- * @param bool $isDeleted
* @param string $sort
* @param string $order
*
* @return array
*/
- public function findEntries($userId, $isArchived = null, $isStarred = null, $isDeleted = null, $sort = 'created', $order = 'ASC')
+ public function findEntries($userId, $isArchived = null, $isStarred = null, $sort = 'created', $order = 'ASC')
{
$qb = $this->createQueryBuilder('e')
- ->leftJoin('e.user', 'u')
- ->where('u.id =:userId')->setParameter('userId', $userId);
+ ->where('e.user =:userId')->setParameter('userId', $userId);
if (null !== $isArchived) {
$qb->andWhere('e.isArchived =:isArchived')->setParameter('isArchived', (bool) $isArchived);
$qb->andWhere('e.isStarred =:isStarred')->setParameter('isStarred', (bool) $isStarred);
}
- if (null !== $isDeleted) {
- $qb->andWhere('e.isDeleted =:isDeleted')->setParameter('isDeleted', (bool) $isDeleted);
- }
-
if ('created' === $sort) {
- $qb->orderBy('e.createdAt', $order);
+ $qb->orderBy('e.id', $order);
} elseif ('updated' === $sort) {
$qb->orderBy('e.updatedAt', $order);
}
- return $qb
- ->getQuery()
- ->getResult();
+ $pagerAdapter = new DoctrineORMAdapter($qb);
+
+ return new Pagerfanta($pagerAdapter);
+ }
+
+ /**
+ * Fetch an entry with a tag. Only used for tests.
+ *
+ * @return Entry
+ */
+ public function findOneWithTags($userId)
+ {
+ $qb = $this->createQueryBuilder('e')
+ ->innerJoin('e.tags', 't')
+ ->innerJoin('e.user', 'u')
+ ->addSelect('t', 'u')
+ ->where('e.user=:userId')->setParameter('userId', $userId)
+ ;
+
+ return $qb->getQuery()->getResult();
}
}