如何在 ZF2 中做 orWhere? [英] How todo a orWhere in ZF2?

查看:30
本文介绍了如何在 ZF2 中做 orWhere?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I'm having difficulties to create params array for ZF2 where I can do a where / or

我知道 orWhere 从 ZF2 开始被删除,但有一些我无法工作的解决方法:

I know that orWhere is removed as of ZF2 but there are workaround which I can't get working:

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
                )
            ), ...

我认为这是待办事项,但似乎不是.

I thought this was the way todo but it seems not.

推荐答案

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

You can use the NEST special property to do complex querying:

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);

这篇关于如何在 ZF2 中做 orWhere?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆