我想添加括号我的请求,但我不知道如何。你能救我吗?
我的SQL查询:
SELECT *
FROM vw_my_asn_header
WHERE username = 'toto'
AND (shipment_number LIKE '20151106052811' OR
shipment_number LIKE '20151110053250' OR
shipment_number LIKE '20151116054359')
ORDER BY message_id ASC
我的查询:
public function searchSitesDeliveries($username, Search $search)
{
$select = $this->tableGateway->getSql()->select();
array(new Predicate\Expression('username = ?', $username)),Predicate\PredicateSet::COMBINED_BY_AND);
if (!empty($search->get_shipment_number()))
{
$valeur = $search->get_shipment_number();
if(is_array($valeur)) {
$valeur = array_unique($valeur);
foreach ($valeur as $key => $value) {
$predicate_set->orPredicate(new Predicate\Like('shipment_number', '%'.$value.'%'));
}
}
else {
$predicate_set->andPredicate(new Predicate\Like('shipment_number', '%'.$valeur.'%'));
}
}
$select->where($predicate_set);
$resultSet = $this->tableGateway->selectWith($select);
return $resultSet;
}
它缺少用户名和apès之间的括号以及where子句的结尾。
["queryString"] => string(181) "SELECT vw_my_asn_header FROM vw_my_asn_header WHERE (username = :where1 AND shipment_number LIKE :where2 OR shipment_number LIKE :where3 OR shipment_number LIKE :where4)"
如何添加它们?
答案 0 :(得分:0)
尝试在循环周围使用方法nest()和unnest():
$predicate_set->nest();
foreach ($valeur as $key => $value) {
$predicate_set->orPredicate(new Predicate\Like('shipment_number', '%'.$value.'%'));
}
$predicate_set->unnest();