Symfony等于和不等于实体标准

时间:2017-01-04 11:38:26

标签: sql symfony doctrine-orm

我想对实体结果执行查找操作。

$stores = c2gr($this, 'EducateToolsBundle:Stores')->findBy(['selectOption' => true, 'center_type_id' => 9])

我想做center_type_id!= 9

2 个答案:

答案 0 :(得分:3)

您应该可以使用Criteria类来实现这一目标。这样的事情应该有效:

use Doctrine\Common\Collections\Criteria;

$criteria = Criteria::create();

$criteria->where($criteria->expr()->neq('center_type_id', 9));
$criteria->andWhere($criteria->expr()->eq('selectOption', true));

$entityRepository = $this->getDoctrine()->getRepository('C2EducateToolsBundle:Stores');

$result = $entityRepository->matching($criteria);

注意:如果您在使用Symfony\Bundle\FrameworkBundle\Controller\Controller方法扩展getDoctrine的课程中,则上面会有效。如果你不在这样的课程中,你应该注入EntityManager或从服务容器中获取它。

有关详情,请查看this answer

答案 1 :(得分:2)

只需使用DQL或QueryBuilder

$repository
    ->createQueryBuilder('s')
    ->where('s.selectOption = :selectOption')
    ->andWhere('s.center_type_id <> :center_type_id')
    ->setParameters([
        'selectOption'   => true
        'center_type_id' => 9,
    ])
    ->getQuery()
    ->getResult();