为什么学说对存储库方法的名称施加人为的限制



有人可以向我解释为什么学说需要存储库方法名称才能从FindboI,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  DoctrineORMNonUniqueResultException
   */
  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();
  }
  .
  .
  .
}

调用此方法会导致此错误:

[错误]应用:调试 (原型...(失败 未定义的方法" checkforduplate"。方法名称必须以FindboI,FindOneby或Countby!

开始

这是因为实体类中的@ORM entity注释缺少repositorityClass =" app repository freeclassquertory freeclassqueryrepository"属性。

感谢@ficuscr的链接,指向类似的stackoverflow问题(请参阅他的第三个评论(。

相关内容

  • 没有找到相关文章

最新更新