2015-08-25 23 views
0

我對Zend很新。如何使用不等於Zend中的過濾器

我知道我可以用這種方式來過濾我的表:

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

這會給我的只有誰擁有20歲及姓爲Foo的用戶。

但是我想要篩選哪裏有20歲以上的用戶,姓是not foo

請指教。

回答

1

學說不提供NOT在他們的內置find*方法。你必須建立你自己的。

  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(); 
    } 
} 
  • 添加存儲庫到實體
  • /** 
    * @ORM\Entity(repositoryClass="Namespace\To\CustomRepo") 
    */ 
    class Entity 
    

    代碼未經測試,但應工作。

    +0

    謝謝,但我分配給這個變量 - '$ em'?它是'$ em = $ this-> getDoctrine() - > getEntityManager();'? –

    +0

    謝謝,它有幫助。 –

    +0

    Ah sry更新我的代碼以使用較短的(和正確的)語法 – danopz