我要添加過濾條件與yii2框架創建和條件,這種情況有可能產生以下請求:yii2如何在另一個
select count(*) from v_ressource
where
(
(
str_to_date('27/04/2016', '%d/%m/%Y')
between str_to_date(erDateDebut, '%d/%m/%Y')
and str_to_date(erDateFin, '%d/%m/%Y')
)
and erDateFin is not null
)
or
(
(
str_to_date('27/04/2016', '%d/%m/%Y')
between str_to_date(erDateDebut, '%d/%m/%Y')
and now()
)
and erDateFin is null
);
正如你可以看到有「和」條件成'或'條件。
我在我的ModelSearch以下代碼:
$query
->andFilterWhere([
'between',
'str_to_date(\'' . $this->dateRecherche . '\', \'%d/%m/%Y %H:%i\')',
new Expression('str_to_date(erDateDebut, \'%d/%m/%Y %H:%i\')'),
new Expression('str_to_date(erDateFin, \'%d/%m/%Y %H:%i\')'),
])
->andFilterWhere([
'not', ['erDateFin' => null],
]);
$query
->orFilterWhere([
'between',
'str_to_date(\'' . $this->dateRecherche . '\', \'%d/%m/%Y %H:%i\')',
new Expression('str_to_date(erDateDebut, \'%d/%m/%Y %H:%i\')'),
new Expression('now()'),
])
->andFilterWhere([
'is', 'erDateFin', null,
]);
的兩個爲空並且不爲空的條件不會出現在所生成的請求,並且沒有「嵌套」的條件(條件和在或條件)
感謝您的幫助
做不明白狀況的。第一個操作數('之後')應該是一個數據庫列名稱。現在它似乎是一個帶有mysql表達式的字符串。另外我沒有使用str_to_date。如果列中的數據庫中有DateTime類型(Yii遷移中的Schema :: TYPE_DATETIME),則不需要str_to_date。你能否提供一些關於模型屬性和相關數據庫列類型的更多細節? – karpy47
沒關係,你不明白我有多對多的關係查詢問題,所以我決定創建一個基於視圖的模型。在這種觀點下,我用法文格式存儲日期。所以這就是爲什麼我使用str_to_date來比較日期:) –