如何在 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
。您必须自己构建。
- 创建自定义存储库
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();
}
}
- 将存储库添加到实体
/**
* @ORM\Entity(repositoryClass="Namespace\To\CustomRepo")
*/
class Entity
代码未经测试,但应该可以工作。
试试这个:
$users = $this->getEntityManager()
->getRepository('MyProject\Domain\User')
->findBy(array('age' => 20, 'surname !=' => 'foo'));
我是 Zend 的新手。
我知道我可以用这种方式来过滤我的 table:
$users = $this->getEntityManager()
->getRepository('MyProject\Domain\User')
->findBy(array('age' => 20, 'surname' => 'foo'));
这将只给我年龄为 20 岁且姓 foo 的用户。
但是我想在它给我年龄为 20 岁且姓氏为 not foo
的用户处进行过滤。
请指教
Doctrine 没有在其内置的 find*
方法中提供 NOT
。您必须自己构建。
- 创建自定义存储库
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();
}
}
- 将存储库添加到实体
/**
* @ORM\Entity(repositoryClass="Namespace\To\CustomRepo")
*/
class Entity
代码未经测试,但应该可以工作。
试试这个:
$users = $this->getEntityManager()
->getRepository('MyProject\Domain\User')
->findBy(array('age' => 20, 'surname !=' => 'foo'));