ZF2如何orWhere()(ZF2 How to orWhere())

2019-07-02 12:56发布

我试图找出如何使一个OR WHERE子句中一个MySQL选择。 默认情况下,在声明的所有条款都与运算以及一些小时后尝试和失败,寻找净不能使它发挥作用。 在ZF1这将是一个orWhere(),但没有在ZF2。

这是我的代码有一个内部AbstracttableGateway

$resultSet = $this->select(function (Select $select) use ($searchstring) {
             $select->join('users','blog_posts.id_user = users.id',array('name'))
                    ->join('blog_categories','blog_posts.id_category = blog_categories.id', array(
                                           'cat_name'   => 'name',
                                           'cat_alias' => 'alias',
                                           'cat_image'  => 'icon'))
                    ->order('date DESC');
                    //->where("title LIKE '%" .$searchstring . "%' OR content LIKE '%". $searchstring ."%'")
            $select->where->like('content','%'.$searchstring.'%');
            $select->where->like('title','%'.$searchstring.'%');
        }
    );
    return $resultSet;

与线$select->where->like是被相与的那些,我希望他们用OR。 我应该怎么改?

Answer 1:

没有orWhere在ZF2,但你可以使用任意组合Zend\Db\Sql\Predicate对象。 对于或使用2个谓词在PredicateSetPredicateSet::COMBINED_BY_OR

有没有为它多文档,但你可以浏览源代码 - 现在。

编辑 :样品

use Zend\Db\Sql\Predicate;

$select->where(array(
    // ...
    new Predicate\PredicateSet(
        array(
            new Predicate\Like('content', '%'.$searchstring.'%'),
            new Predicate\Like('title', '%'.$searchstring.'%'),
        ),
        Predicate\PredicateSet::COMBINED_BY_OR
    ),
    // ...
));


Answer 2:

或者你使用云:

$select->where
    ->like('content','%'.$searchstring.'%')
    ->or
    ->like('title','%'.$searchstring.'%');


文章来源: ZF2 How to orWhere()