pdoPage и where, как отфильтровать по дате

Здравствуйте сообщество Модекс, У меня вопрос на помощь:

Как правельно создать запрос на фильтр данных в pdoPage чтобы выбрать все записи за определенный период времени?

пробую перейти на ajax выборку:

if ($_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') {return;}

// Сниппет будет обрабатывать не один вид запросов, поэтому работать будем по запрашиваемому действию
// Если в массиве POST нет действия - выход
if (empty($_POST['action'])) {return;}

// А если есть - работаем
$res = '';
switch ($_POST['action']) {
  case 'test':
  $res = 'Hello World!';
  break;
  // А вот сюда потом добавлять новые методы
  case 'all-jobs': 
	$params = array(); 
	$params['class'] = 'Jobs';
	$datestart = "2015-05-25"; // здесь я буду постом обнавлять данные
	$dateend = "2015-06-01"; // здесь я буду постом обнавлять данные
	$params['tpl'] = 'jobs.main.tpl';
	$params['element'] = 'getTablesInfo';
        $params['limit'] = '7';
	$params['where'] = '{"date_created:>=":$datestart, "date_created:<=":$dateend}';  // этот костыль не работает
        $params['sortby'] = '{"date_created":"DESC"}';
	$res = $modx->runSnippet('pdoPage', $params);
	break;
  
}

// Если у нас есть, что отдать на запрос - отдаем и прерываем работу парсера MODX
if (!empty($res)) {
  die($res);
}
Код брался из Открытого источника. Перерыл много материала, много подчеркнул для себя но практически ничего по моей проблеме. Если сделать запрос без выборки where то данные проходят и возвращаются значения, сделать выборку не получается.

Пробовал написать сниппет с параметрами дат, что опять же работает только при обыкновенной выборке но не по периоду значений. Даты в базе DATETIME не в Unix формате.

Вопрос к сообществу:
1. Как правельно необходимо построить запрос?
если мне необходимо реализовать сортировку «на лету» как правельно реализовать динамику изменения дат и вывод оезультатов?
2. При вызове pdoPage, в ajax как мне вывести пагинацию если я поставил лимит?
Сергей Леоненко
27 июля 2015, 21:28
modx.pro
2 033
0

Комментарии: 2

Максим Кузнецов
28 июля 2015, 00:46
0
Для начала вам придется преобразовывать каждую дату в Unix-формат, после чего через where сравнивать его с требуемым диапазоном дат в том же Unix-формате (в противном случае произвести сравнение методами «больше»/«меньше» вряд ли удастся.

Честно говоря, не уверен, что такой метод будет работать: не совсем понятно, что сработает раньше — аякс-пагинация pdoTools или ваша выборка where — и не перезапишет ли один результат другой.

Можете попробовать удалить из системных настроек вложенные скрипты pdoPage для ajax'a и написать свой, с параллельной проверкой where и заданной страницы.

А вообще, модуль mfilter2 лишил бы вас множества проблем в этой области — он отлично дружит с pdoPage и делает перерасчет на лету.

    Сергей Шлоков
    28 июля 2015, 07:19
    0
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      2