【发布时间】:2015-11-06 11:03:04
【问题描述】:
我有点卡在多个where 的查询上。我想在Zend\Db\Sql\Select 查询中“翻译”下面的查询:
SELECT `users`.*, `users_metas`.*
FROM `users` INNER JOIN `users_metas` ON `users`.`ID` = `users_metas`.`parent_id`
WHERE `role` = 'admin'
AND (
`users`.`username` like '%q_word%'
OR
(`users_metas`.`meta_key` = 'name'
AND
`users_metas`.`meta_value` like '%q_word%')
)
ORDER BY `date_added` ASC
我尝试过这样的事情:
$select = new Select();
$select->where(array('role' => 'admin'));
$select->join('users_metas', 'users.ID = users_metas.parent_id');
但我坚持这样做:
AND (
`users`.`username` like '%q_word%'
OR
(`users_metas`.`meta_key` = 'name'
AND
`users_metas`.`meta_value` like '%q_word%')
)
谢谢!
【问题讨论】:
-
我使用
Expresion解决查询,例如$where = "users.username LIKE '%".$search."%' OR (users_metas.meta_key = 'name' AND users_metas.meta_value LIKE '%$search%'))"; $select->where(new Expression($where));。但如果是其他方式,我想尝试不同的方式。谢谢!
标签: zend-framework zend-framework2 zend-db zend-db-table