41 lines
1.1 KiB
PHP
41 lines
1.1 KiB
PHP
<?php
|
|
|
|
namespace App\Repository;
|
|
|
|
use App\Entity\MovieRole;
|
|
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
|
|
use Doctrine\Persistence\ManagerRegistry;
|
|
|
|
/**
|
|
* @extends ServiceEntityRepository<MovieRole>
|
|
*/
|
|
class MovieRoleRepository extends ServiceEntityRepository
|
|
{
|
|
public function __construct(ManagerRegistry $registry)
|
|
{
|
|
parent::__construct($registry, MovieRole::class);
|
|
}
|
|
|
|
/**
|
|
* @param list<int> $excludeMovieRoleIds MovieRole IDs to exclude
|
|
* @return MovieRole|null
|
|
*/
|
|
public function findOneRandomByActor(int $actorId, array $excludeMovieRoleIds = []): ?MovieRole
|
|
{
|
|
$qb = $this->createQueryBuilder('mr')
|
|
->andWhere('mr.actor = :actorId')
|
|
->setParameter('actorId', $actorId);
|
|
|
|
if (!empty($excludeMovieRoleIds)) {
|
|
$qb->andWhere('mr.id NOT IN (:excludeIds)')
|
|
->setParameter('excludeIds', $excludeMovieRoleIds);
|
|
}
|
|
|
|
return $qb
|
|
->orderBy('RANDOM()')
|
|
->setMaxResults(1)
|
|
->getQuery()
|
|
->getOneOrNullResult();
|
|
}
|
|
}
|