Pdo resource как правильно написать условие where

Всем привет.
Мне необходимо использовать фильтр записей, делается это двумя инпутами, сделанными в виде слайдеров, аяксом я передаю эти значения снипету. Так же написал снипет для перевода значений TV и переданных постом в int.
Обе части (тв common-square и переданное Постом)удалось привести к int
Вот код сниппета:
<?php
  return (int)trim($input);
Вот код ресурса для выборки:
[[!pdoResources?
    &parents=`15`
    &depth=`0`
    &tpl=`tpl_house_page`
    &includeTVs=`people, main-pic, 1st-floor-square, 2nd-floor-square, Balkon-square, Common-square, Terassa-square`
    &where=`{
      "[[!strToInt? &input=`[[*Common-square]]`]]:<=":"[[!strToInt? &input=`[[!#POST.square]]`]]",
      "AND:people:>=":"[[!#POST.people_count]]"
    }`
    &showLog=`0`
]]
Но проверка не работает, всегда возвращает пустоту.
Вот сайт



Решил сделать проще, написать внутри SQL код.
Для начала решил начать с такого, чтобы проверить, работает ли.
[[!pdoResources?
    &parents=`15`
    &depth=`0`
    &tpl=`tpl_house_page`
    &includeTVs=`people, main-pic, 1st-floor-square, 2nd-floor-square, Balkon-square, Common-square, Terassa-square`
    &where=`{"TVCommon-square.value <= 120"}`
    &showLog=`1`
]]
Но когда я смотрю лог pdoResources, я там в сгенерированном SQL запросе вообще не наблюдаю ничего похожего на TVCommon-square.value <= 120
В чем может быть дело?
Максим
17 марта 2016, 20:30
modx.pro
1 631
0

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

Максим
23 марта 2016, 10:05
0
Дело оказалось в следующем. При написании чистого SQL необходимо оборочивать конструкцию where в квадратные скобки вместо фигурных. Т.е. вот так:
&where=`["TVCommon-square.value <= 120"]`
В дополнение к этому, в имени TV нельзя использовать символ -, так как в SQL запросе он трактуется, как минус, и так же, modx приводит все имена к нижнему регистру, несмотря на название TV Commin_square, в БД таблица будет называться TVcommon_square, т.е. итоговый вариант таков:
&where=`["TVcommon_square.value <= 120"]`
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    1