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