Pdoresources, ошибка в where

Добрый день!
Например, это
&where=`{"LEFT(route_max, 6):=":"Moscow"}`

Возвращает такую ошибку:
0.0005219: Could not process query, error #1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'TVroute_max`.`value`, 6)` = 'Moscow' AND `modResource`.`parent` IN (169,242,243,' at line 1

При этом, например, вот так
&where=`{"route_max:LIKE":"%Moscow%"}`
все работает нормально.

Не уверен, что я все делаю правильно, но, насколько мне известно, использование строковых функций в where допускается?
Андрей Иванов
07 апреля 2014, 10:43
modx.pro
1 698
0

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

Василий Наумкин
07 апреля 2014, 15:39
0
Попробуй так:
&where=`["LEFT(route_max, 6) = 'Moscow'"]`
    Андрей Иванов
    07 апреля 2014, 16:00
    0
    Спасибо!

    Пробую:
    &where=`["LEFT(route_max, 6):NOT LIKE":"%Moscow%"]`
    В этом случае запрос формируется вот так:
    WHERE  ( `modResource`.`parent` IN (169,242,243,246,247,248) AND `modResource`.`deleted` = 0 )
    Как видишь, условие в него не попадает — он выводит вообще все записи.
      Василий Наумкин
      07 апреля 2014, 16:01
      0
      Посмотри еще раз внимательно на то, что написал я, и что ты.

      Подсказка — у меня нет двоеточий.
        Андрей Иванов
        07 апреля 2014, 16:17
        0
        Да, вижу, извини.
        Но если в таком виде
        &where=`["LEFT(route_max, 6) = 'Moscow'"]`
        то еще в админке MODX ошибку выдает синтаксическую.
          Василий Наумкин
          07 апреля 2014, 16:21
          0
          Обожемой. Нужно научить экранировать ковычки в php коде?

          Ну и если уж ты пишешь php, то и вызывай через runSnippet:
          $x = $modx->runSnippet('pdoResource', array(
          	'parents' => 169,
          	'where' => array('LEFT(route_max, 6) = "Moscow"'),
          	//и тд
          ));
          echo $x;
            Андрей Иванов
            07 апреля 2014, 16:24
            0
            Вот же блин!
            Конечно же:
            &where=`["LEFT(route_max, 6) = \"Moscow\""]`
            Все работает, спасибо!
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    6