0

これまでのところ、zend2 SELECT クエリで AND と LIKE を適用できますが、OR 演算子を適用する方法がわかりません。これは私のクエリです:

 $this->table = $data['table'];
    $select = new Select();
    $spec = function (Where $where) {
        $where->like('title', 'border%');
    };
    $select->from($this->table)
            ->where(array('id'=>  8));
    $select->where($spec);
    $resultSet = $this->selectWith($select);
    $resultSet->buffer();
    return $resultSet;

このSQLステートメントを返します

SELECT `rs_morning_report`.*   
FROM `rs_morning_report` 
WHERE `id` = :where1 AND `title` LIKE :where2

「AND (セクター LIKE %a% OR セクター LIKE %b%)」を追加したい

4

2 に答える 2

4

Where オブジェクトを使用してそれらを連鎖させることができます。

$where = new Where();
$where->equalTo('fieldOne', 'XX')
    ->AND
    ->equalTo('field_two', 'XXX')
    ->OR
    ->equalTo('field_three', 'XXX')
;

$select->where($where);

必要に応じて、それらをネストすることもできます。

$where = new Where();
$where->equalTo('fieldOne', 'XX')
    ->NEST
        ->equalTo('field_two', 'XXX')
        ->OR
        ->equalTo('field_three', 'XXX')
    ->UNNEST
;

$select->where($where);
于 2013-04-12T14:58:00.417 に答える
0

ORステートメントを生成するZend\Db\Sql\Predicate\PredicateSetには、パラメーターで使用できますPredicateSet::COMBINED_BY_OR

例:

use Zend\Db\Sql\Predicate;

$select->where(array(
    // Other conditions...
    new Predicate\PredicateSet(
        array(
            new Predicate\Like('sector', '%'.$sectorA.'%'),
            new Predicate\Like('sector', '%'.$sectorB.'%'),
        ),
        Predicate\PredicateSet::COMBINED_BY_OR
    ),
));
于 2013-04-12T22:23:06.223 に答える