Может кто-нибудь объяснить мне, почему Doctrine требуются имена методов репозитория для начала с findBy, findOneBy или countBy и почему даже имена с этими префиксами должны заканчиваться именем столбца?
Существуют допустимые случаи использования, когданапример, полезно подсчитать количество записей, содержащих несколько совпадающих столбцов.
// src/Repository/FreeClassQueryRepository.php
class FreeClassQueryRepository extends ServiceEntityRepository
{
.
.
.
/**
* Returns true if one or more free class query records match the supplied
* FreeClassQuery object.
*
* @param FreeClassQuery $query
* @return bool
* @throws \Doctrine\ORM\NonUniqueResultException
*/
public function checkForDuplicate( FreeClassQuery $query )
{
$q = $this->createQueryBuilder( 'fcq' )
->select( 'COUNT(id)' )
->andWhere( 'fcq.name = :name' )
->setParameter( 'name', $query->getName())
->andWhere( 'fcq.email = :email' )
->setParameter( 'email', $query->getEmail())
->andWhere( 'fcq.street = :street' )
->setParameter( 'street', $query->getStreet())
->andWhere( 'fcq.city = :city' )
->setParameter( 'city', $query->getCity())
->andWhere( 'fcq.state = :state' )
->setParameter( 'state', $query->getState());
return $q->getQuery()->getSingleScalarResult();
}
.
.
.
}
Вызов этого метода приводит к следующей ошибке:
приложение [ОШИБКА]:debug (Prototyping ...) не удалось Неопределенный метод 'checkForDuplicate'.Имя метода должно начинаться с findBy, findOneBy или countBy!