You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

56 lines
1.4 KiB

<?php
namespace App\Repository;
use App\Entity\Project;
use App\Entity\Task;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\Persistence\ManagerRegistry;
/**
* @extends ServiceEntityRepository<Project>
*/
class ProjectRepository extends ServiceEntityRepository
{
public function __construct(ManagerRegistry $registry)
{
parent::__construct($registry, Project::class);
}
/**
* @return Project[] Returns an array of Project objects
*/
public function findAllOrderedByActivity(): array
{
return $this->createQueryBuilder('p')
->orderBy('p.createdAt', 'DESC')
->getQuery()
->getResult()
;
}
public function findSomeOrderedByPopularity($limit = 3): array
{
$entityManager = $this->getEntityManager();
$query = $entityManager->createQuery('
SELECT p
FROM '.Project::class.' p
JOIN '.Task::class.' t
GROUP BY p.id
ORDER BY MAX(t.finishAt) DESC
')
->setMaxResults($limit);
return $query->getResult();
}
// public function findOneBySomeField($value): ?Project
// {
// return $this->createQueryBuilder('p')
// ->andWhere('p.exampleField = :val')
// ->setParameter('val', $value)
// ->getQuery()
// ->getOneOrNullResult()
// ;
// }
}