Сортировка по полю dob

Привет!
Хочу в панельке на сайте сделать виджет «Ближайшие дни рождения».
Пытаюсь сделать вот так:
[[!pdoUsers?
            &tpl=`@INLINE <p>[[+username]] - [[+dob]]</p>`
        	&sortby=`dob`
        	&limit=`5`
        	&where =`MONTH(modUserProfile.dob) > [[!today_m]]`
        	&sortdir=`DESC`
        	&showLog=`1`
        	
        ]]
[[!today_m]] — это номер текущего месяца.
В результате ничего — просто первые 5 записей выходят. Думаю, что проблема в синтаксисе where и поле modUserProfile.dob. Но никак не могу найти как правильно его составить… Подскажите мне пожалуйста, как правильнее составить такой запрос…
Андрей Сухомозгий
03 ноября 2015, 09:22
modx.pro
1 149
0

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

Илья Уткин
03 ноября 2015, 19:32
0
Это поле хранится в виде timestamp, поэтому выбирать надо, например с помощью BETWEEN, ну или просто
&where =`{"dob:>=":[[!monthStart]],"AND:dob:<":[[!monthEnd]]}`

monthStart
<?php
return strtotime(date("Y-m-01 00:00:00"));

monthEnd
<?php
return strtotime(date("Y-m-01 00:00:00")." + 1 month");
    Андрей Сухомозгий
    03 ноября 2015, 22:00
    0
    Спасибо за подсказку, но к сожалению не работает такой пример. Сначала пишет, что не может найти поле dob в modUser. Когда я в
    &where =`{"dob:>=":[[!monthStart]],"AND:dob:<":[[!monthEnd]]}`
    пишу
    &where =`{"modUserProfile.dob:>":[[!monthStart]],"AND:modUserProfile.dob:<":[[!monthEnd]]}`
    То ошибок в логе нет, но при этом и ничего не выводит…
      Сергей Шлоков
      04 ноября 2015, 10:49
      +1
      ShowLog же включен, смотри получившийся sql запрос.
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    3