Pdoresource неправильно обрабатывает условие where. РЕШЕНО!

Всем привет!
Сразу к делу. Код сниппета:

<?php
$where = array(
    'Lo:>=' => 100,
    'Lo:<=' => 140,
);

$where = $modx->toJSON($where);

$output = $modx->runSnippet('pdoResources',array(
    'limit' => 15,
    'parents' => 71,
    'includeTVs' => 'Lo',
    'where' => $where,
    'return' => 'json'
));

return $output;
Данный сниппет выдает результат из 4 значений, то есть работает корректно. Когда меняю 100 на 99, результатом сниппета становится пустой массив. Что интересно, когда меняю 99 на 10, сниппет отрабатывает правильно.

Не понимаю, что за магия происходит. Помогите разобраться.

UPD. Когда ввожу 0, 1, 11, 12 и выборка работает нормально. Остальные числа до 99 включительно отдают пустой результат.
Денис
07 апреля 2021, 22:23
modx.pro
99
0

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

Артур
07 апреля 2021, 22:33
0
Lo это строка?
Артур
07 апреля 2021, 23:32
0
Тогда попробуй не переводить в json
    Денис
    07 апреля 2021, 23:34
    0
    Убрал строку
    'return' => 'json'
    Ничего не изменилось, поведение то же.
      Артур
      07 апреля 2021, 23:35
      0
      Вот это убери $modx->toJSON($where);
        Денис
        07 апреля 2021, 23:37
        0
        Убрал. То же поведение.
    Роман
    08 апреля 2021, 09:27
    0
    Добавь showLog и посмотри, какой запрос у тебя отправляется в базу.
    Проблема в том, что в TV-ки хранятся, как строки, поэтому ничего и не ищет. Лучше добавьте свое поле и по нему уже делайте выборку.
      Наумов Алексей
      08 апреля 2021, 09:59
      0
      CAST вам нужно в where использовать, tv это ж строка, а не число
        Денис
        08 апреля 2021, 10:21
        0
        Подскажите, пожалуйста, а как cast используется в where?

        Я решил проблему но другим способом:
        $where = array(
        	"0" => "Lo BETWEEN 99 AND 140",
        );
        
        $output = $modx->runSnippet('pdoResources',array(
            'limit' => 15,
            'parents' => 71,
            'includeTVs' => 'Lo',
            'where' => $where,
            'return' => 'json'
        ));
        
        return $output;
          Роман
          08 апреля 2021, 14:11
          0
          Тоже хотел вам предложить через BETWEEN, но не был уверен, что сработает.
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        11