【问题标题】:How can i put condition in doctrine query builder我如何在学说查询生成器中放置条件
【发布时间】:2012-08-15 15:31:07
【问题描述】:

我有这个问题

$qb->select('u')
           ->from('UserBundle:User', 'u')
           ->where('u.location = :identifier')
           ->orderBy('u.firstName', 'ASC')
           ->setParameter('identifier', 2);

我希望如果 $identifier 存在,那么它应该过滤结果,否则我会得到所有结果,例如

$qb->select('u')
               ->from('UserBundle:User', 'u')
                       if($identifier)             
                       ->where('u.location = :identifier')
               ->orderBy('u.firstName', 'ASC')
                       if($identifier) 
               ->setParameter('identifier', 2);

有没有可能

【问题讨论】:

    标签: php doctrine-orm symfony-2.1


    【解决方案1】:

    有可能,你只需要重构你的代码。

    $qb->select('u')
               ->from('UserBundle:User', 'u')
               ->orderBy('u.firstName', 'ASC');
    if($identifier) {
            $qb->where('u.location = :identifier')
               ->setParameter('identifier', 2);
    }
    

    【讨论】:

    • 不是orderby应该放在最后还是可以放在where子句之前
    • 这就是查询生成器的美妙之处:在调用getQuery() 之前,您可以按照您喜欢的任何顺序修改查询。
    猜你喜欢
    • 2011-12-04
    • 2020-01-18
    • 2016-11-11
    • 2012-12-07
    • 2016-04-02
    • 2017-01-12
    • 1970-01-01
    • 2015-07-03
    • 1970-01-01
    相关资源
    最近更新 更多