0
我有我已經準備將其傳遞到查詢條件的數組:語義錯誤將數組傳遞給查詢時
陣列:
('u.registered = 1','u.active = 0', 'u.gender = M')
當我傳遞到查詢時,它與數字比較一起工作,但與varchar不同,它是M.這個錯誤出現在「性別」中,它表示這是一個語義錯誤。我假設是因爲我沒有使用expr() - >文字('M'),但我不能這樣做,因爲查詢是「已經建好」的。
有沒有其他方法,不得不重新編碼?
這是代碼:
public function customR($data){
// var_dump($data);die();
$this->qb = $this->em->createQueryBuilder();
$andX = $this->qb->expr()->andX();
$this->qb->select('u')
->from('models\User','u');
foreach ($data as $value){
$andX->add($value);
}
$this->qb->add('where', $andX);
$query = $this->qb->getQuery();
// var_dump($query);die();
$obj = $query->getResult();
var_dump($obj);die();
if (!empty($obj)){
return $obj;
return false;
}
}
你是什麼意思'已經built'?你的意思是'$ data'變量就是這樣來的,你不能改變它? –
沒錯。我在php中「建立」條件,然後只是將字符串數組傳遞給查詢。這是一個簡單的解決方案,但它不起作用,當我必須與一個varchar比較,在這種情況下,如「M」 – Limon
這是你在建立條件時應該處理的事情。之後,它已經很晚了,你必須解析條件。 –