Implement tag filtering

This commit is contained in:
Tim
2025-05-10 20:44:13 +02:00
parent e2bd1a7c3b
commit b8ae8bb8a7
9 changed files with 90 additions and 34 deletions

View File

@ -79,6 +79,13 @@ class SnipRepository extends ServiceEntityRepository
throw new \InvalidArgumentException('Invalid sort option: ', $request->sort);
}
if ($request->tag) {
$qb->innerJoin('s.tags', 't')
->andWhere('t.name = :tag')
->setParameter('tag', $request->tag)
;
}
return $qb->getQuery()->getResult();
}

View File

@ -5,6 +5,7 @@ namespace App\Repository;
use App\Entity\Tag;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\Persistence\ManagerRegistry;
use Symfony\Component\Security\Core\User\UserInterface;
/**
* @extends ServiceEntityRepository<Tag>
@ -22,28 +23,8 @@ class TagRepository extends ServiceEntityRepository
$this->getEntityManager()->flush();
}
// /**
// * @return Tag[] Returns an array of Tag objects
// */
// public function findByExampleField($value): array
// {
// return $this->createQueryBuilder('t')
// ->andWhere('t.exampleField = :val')
// ->setParameter('val', $value)
// ->orderBy('t.id', 'ASC')
// ->setMaxResults(10)
// ->getQuery()
// ->getResult()
// ;
// }
// public function findOneBySomeField($value): ?Tag
// {
// return $this->createQueryBuilder('t')
// ->andWhere('t.exampleField = :val')
// ->setParameter('val', $value)
// ->getQuery()
// ->getOneOrNullResult()
// ;
// }
public function findAllByUser(UserInterface $user): array
{
return $this->findBy(['user' => $user]);
}
}