0
我使用下面的代碼來構建一個基於GET請求參數的查詢,作爲REST服務:Zend Sql:添加一個新的Where對象到一個Select已經有where子句的對象導致預先存在的where子句被刪除
foreach($params as $key=>$param) {
if($key != 'page' && $key != 'pageSize' && $key != 'likeStart' && $key != 'likeEnd') {
if(strpos($param, ',') !== false) {
$where = new \Zend\Db\Sql\Where();
$predicate_set = $where->nest();
$param_arr = explode(',', $param);
$entered_once = 0;
foreach($param_arr as $p) {
$field = str_replace("_", ".", $key);
if(!$like) {
$arr[$field]['egal'] = $p;
$predicate_set->equalTo($field, $p);
}
else {
$predicate_set->like($field, "%$p%");
$arr[$field]['like'] = $p;
}
var_dump($predicate_set);
if($entered_once < count($param_arr)) {
$predicate_set->or;
}
$entered_once++;
}
$predicate_set->unnest();
$select->where($where);
}
else {
$field = str_replace("_", ".", $key);
if(!$like) {
$select->where->equalTo($field, $param);
$arr[$field]['egal'] = $param;
}
else {
$select->where->like($field, "%$param%");
$arr[$field]['like'] = $param;
}
}
}
else if($key == 'likeStart') {
$like = true;
}
else if($key == 'likeEnd') {
$like = false;
}
}
與它的問題是該行$select->where($where);
一切後,我以前在哪裏上的選擇條款(或對象)被替換爲新的謂詞在哪裏了。有沒有辦法將謂詞添加到現有的對象?