doctrine如何使用子句:IN在findOneBy中

时间:2015-04-09 10:02:09

标签: symfony doctrine-orm

我在Symfony2的一个项目中工作,我有一个实体调用文件,我想要做的是从数据库中获取一个文件,但有一些标准,但最重要的标准是文件不应该与给定的数组匹配Ids并没有在文件库中实现方法

$Ids = (1,2,3,4,5);
$file = $repoFile->findOneBy(array(
      'id'=> $Ids,    // the Id should not match with the array $Ids
      'deleted' => NULL,
      'isMain' => 1
  ));

我怎么能告诉doctrine该文件不应该与数组匹配:$ Ids 而且我更喜欢直接在我的班级中进行,而无需在文件库中实现方法

1 个答案:

答案 0 :(得分:0)

您可以将createQueryBuilder用于NOT IN()子句

$result= $repoFile->createQueryBuilder('r')
    ->select('r')
    ->where('r.id NOT IN (:ids)' )
    ->setParameter( 'ids', $Ids, \Doctrine\DBAL\Connection::PARAM_INT_ARRAY )
    ->andWhere('r.deleted = :deleted')
    ->setParameter('deleted',NULL)
    ->andWhere('r.isMain= :isMain')
    ->setParameter('isMain',1)
    ->getQuery()->getResult();