如何在 Zend 中使用不等于过滤器

How to use not equal to filter in Zend

我是 Zend 的新手。

我知道我可以用这种方式来过滤我的 table:

$users = $this->getEntityManager()
         ->getRepository('MyProject\Domain\User')
         ->findBy(array('age' => 20, 'surname' => 'foo'));

这将只给我年龄为 20 岁且姓 foo 的用户。

但是我想在它给我年龄为 20 岁且姓氏为 not foo 的用户处进行过滤。

请指教

Doctrine 没有在其内置的 find* 方法中提供 NOT。您必须自己构建。

  1. 创建自定义存储库
use Doctrine\ORM\EntityRepository; //maybe a slightly different path

class CustomRepo extends EntityRepository
{
    public function findByAgeNotSurname($age, $surname)
    {
        $qb = $this->createQueryBuilder('u');

        return $qb->where('u.age = :age')
            ->andWhere('u.surname != :surname')
            ->setParameters(array('age' => $age, 'surname' => $surname))
            ->getQuery()
            ->getResult();
    }
}
  1. 将存储库添加到实体
/**
 * @ORM\Entity(repositoryClass="Namespace\To\CustomRepo")
 */
class Entity

代码未经测试,但应该可以工作。

试试这个:

$users = $this->getEntityManager()
         ->getRepository('MyProject\Domain\User')
         ->findBy(array('age' => 20, 'surname !=' => 'foo'));