我有一個包含多個orWhere語句的查詢。 PHP代碼如下所示:Doctrine_Query在Doctrine 1.2中出現奇怪的行爲
$firstDay = $params['datetimeForMonth']->format('Y-m-d');
$lastDay = $params['datetimeForMonth']->format('Y-m-t 23:59:59');
$whereStatement = "(s.level = ?
AND s.idForLevel IN (?)
AND s.startDatetime BETWEEN '$firstDay' AND '$lastDay')";
$q = Doctrine_Query::create()
->from('Mmb_Model_Schedule s')
->where($whereStatement, ['prefecture', $this->id])
->orWhere($whereStatement, ['district', $districtIds])
->orWhere($whereStatement, ['municipality', $municipalityIds])
->orWhere($whereStatement, ['workplace', $workplaceIds])
->orWhere($whereStatement, ['user', $userIds]);
變量$ districtIds,$ municipalityIds,$ workplaceIds,和$用戶id都被定義的時間提前爲逗號分隔值。
此查詢對除區域ID以外的每個級別都適用。查詢中不會返回任何等級爲「區域」的記錄。
什麼是真正奇怪的是,如果我不使用綁定參數,而是插入下面的代碼,一切正常:
->orWhere("s.level = 'district' AND s.idForLevel IN ($districtIds) AND s.startDatetime BETWEEN '$firstDay' AND '$lastDay'")
什麼是更令人氣憤的是,即使這個查詢本身所做的一切作爲如果我使用綁定參數,則單個where語句(不包括所有其他語句)也不會提供任何內容。
而且如果這還不夠,我甚至試着更新表格將'區'更改爲'prefDistrict',以防萬一'區'這個詞引起問題。沒有改變。
儘管我將直接輸入它們的EXACT SAME數據作爲綁定參數插入,但這種行爲發生了顯着變化。這裏發生了什麼?
他們只是整數值。 – blainarmstrong