День добрый!
Есть представление с двумя датами.
Дата подачи заявления и дата рассмотрения заявления.
Нужно было поставить фильтр вывода, как мне казалось простой фильтр, сравнение по датам заявления и проверки. Если дата заявления больше даты проверки то строка представления выводится, если меньше или равно дате проверки, то строка не выводится (заявление проверили и дата проверки не может быть меньше даты отправки заявления).
Выбрал фильтр сравнение полей и выбрал эти два поля с датами для сравнения, но.... фильтр не работает.
Кто может сказать почему? Как можно другим способом сравнить эти два поля с датами?
Спасибо
Комментарии
Либо через views api либо https://www.drupal.org/project/views_php
views_php у меня стоит. Для использования php в фильтре он пишет строка не будет выводиться, если введенный код возвращает true
вот я попробовал такую конструкцию
$end_value = $row->field_user_checked; // дата проверки заявления
if ( $end_value > $start_value ) {
return TRUE;
}
И не отрабатывает во вьюс выводит все заявления без проверки условия, если изменить сравнение на
$end_value < $start_value , что в моей логике вывода данных не правильно, то вьюс вообще пустой открывается, хотя есть записи подходящие к критерию фильтра.
Переменную не правильно вывожу. Решил просто добавить новое поле во вьюс что бы проверить как выводится дата $row->submitted и ничего не вывелось и достучаться до значения не получилось. Пробовал и так
$date1 = strtotime($date);
print $date1;
В этом я думаю и ошибка - правильно вытянуть дату...
Насколько я знаю, проблема в модуле views_php. $row->field_user_checked вместо значения поля возвращает nid. Можете проверить это, внутри кода фильтра добавить dpm($row->field_user_checked) если devel включен. Проблема обсуждалась здесь https://www.drupal.org/project/views_php/issues/1140896
Можно конечно взять значение поля из ноды, но грузить ноду в фильтре глупо. Так что можно через views_api делать, как предлагали выше. Или может добавить computed_field "Заявка рассмотрена" в заявку и при сохранении сравнивать даты, проверять рассмотрена заявка или нет. Так и вьюс будет работать быстрее.
Разобрался со своим вопросом. Как и предполагал проблема была в том, что даты были в разных форматах в БД. Одна дата записывалась в поле INT 11, другая дата DATETIME. Привел обе даты к общему стандарту timestamp и условие сравнение дат заработало. К сожалению без php фильтра не обошлось. Что не есть хорошо.
Все спасибо за помощь.