Welling Guzman's homepage

Zend DB Nested Conditions

If you want to nest multiple conditions using Zend DB, there's two methods made for this, nest() and unnest(), it begins and ends the nesting. Alternative you can use nest and unnest as property.

We are going to create the query below using Zend DB.

SELECT `id`, `name`, `language`, `country`
FROM `customers`
WHERE `country` = 'jp'
    AND (`language` = 'en' OR `language` = 'ja')
use Zend\Db\Sql\Sql;
use Zend\Db\Sql\Where;

$sql = new Sql($adapter);
$select = $sql->select();
$select->columns([
  'id',
  'name',
  'language',
  'country'
]);
$select->from('customers');

$where = new Where();
$where->equalTo('country', 'jp');

// Open nesting
$whereNest = $where->nest();
$whereNest->equalTo('language', 'en');
$whereNest->or;
$whereNest->equalTo('language', 'ja');

// Close nesting
$whereNest->unnest();
$select->where($where);

$statement = $sql->prepareStatementForSqlObject($select);
$results = $statement->execute();