【问题标题】:How todo a orWhere in ZF2?如何在 ZF2 中执行 orWhere?
【发布时间】:2016-01-18 00:14:34
【问题描述】:

我在为 ZF2 创建参数数组时遇到困难,我可以在其中执行 where / 或

我知道从 ZF2 起 orWhere 已被删除,但有一些我无法使用的解决方法:

use Zend\Db\Sql\Predicate;
$params = array(
        'select' => implode(', ', array(
            '`user`.`id`',
            '`user`.`username`',
            '`user`.`firstname`',
            '`user`.`middlename`',
            '`user`.`lastname`',
            '`user`.`externalEmail`',
            '`user`.`email`',

        )),


         "where" => implode(
                new Predicate\PredicateSet(
                    array(
                            new Predicate\Like( '`user`.`email` = :email'),
                            new Predicate\Like( '`user`.`email2` = :email'),
                    ),
                    Predicate\PredicateSet::COMBINED_BY_OR
                )
            ), ...

我以为这是要做的事情,但似乎不是。

【问题讨论】:

    标签: php zend-framework2


    【解决方案1】:

    您可以使用NEST 特殊属性进行复杂查询:

    use \Zend\Db\Sql\Where;
    use \Zend\Db\Sql\Select;
    
    $select = new Select();
    $select->from('user');
    
    $where = new Where();
    $where->NEST
        ->equalTo('email', $email)
        ->OR
        ->equalTo('email2', $email)
    ->UNNEST;
    $select->where($where);
    

    【讨论】:

    • 谢谢,我今天下午确实做了类似的事情,并把它修好了。很高兴了解如何通过多种方式做到这一点。
    猜你喜欢
    • 1970-01-01
    • 2014-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 2019-10-15
    • 2015-11-24
    • 1970-01-01
    相关资源
    最近更新 更多