Я хочу, чтобы добавить условие фильтра с 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 в базе данных (Schema :: TYPE_DATETIME в миграции Yii), нет необходимости в str_to_date. Не могли бы вы дать более подробную информацию об атрибутах модели и связанных с ними типах столбцов базы данных? – karpy47
Это нормально, что вы не понимаете, что у меня были проблемы со многими отношениями-отношениями, поэтому я решил создать модель, основанную на представлении. В этой связи я сохранил даты во французском формате. Вот почему я использую str_to_date для сравнения даты :) –