Запрос с чистым sql в pdoTools

Здравствуйте!

У меня стоит задача делать разный вывод пользователей в зависимости от get параметра search в url.

Изначально сделал так
&where=`{
    "modUserProfile.fullname:LIKE": "%[[!#get.search]]%",
    "OR:modUserProfile.mobilephone:LIKE": "%[[!#get.search]]%"
}`
Но в таком случае итоговый запрос получается такого вида
Added where condition: modUser.active=1, modUserProfile.blocked=0, modUserGroupMember.user_group:IN(2), modUserProfile.fullname:LIKE=%1234%, OR:modUserProfile.mobilephone:LIKE=%1234%
То есть он игнорит все что идет до
OR:modUserProfile.mobilephone:LIKE=%1234%
Поэтому мне нужно обернуть
modUserProfile.fullname:LIKE=%1234% OR:modUserProfile.mobilephone:LIKE=%1234%
в скобки.

Вот тут и проблема, пишу так:
&where=`["
	(modUserProfile.fullname LIKE \"%[[!#get.search]]%\" OR modUserProfile.mobilephone LIKE \"%[[!#get.search]]%\")
"]`
Но эта строчка не добавляется в запрос вообще. Пробовал по разному кавычки менять, не выходит. Даже если вместо [[!#get.search]] добавить строку.
Владислав
27 января 2016, 09:53
modx.pro
1
1 282
0

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

Владислав
27 января 2016, 13:55
0
Даже если так записать
&where=`["
	modUserProfile.fullname LIKE \"%Рога%\"
"]`
В логе видно что эта запись не добавляется в WHERE.
Мне бы хоть 1 рабочий пример.
    Konstantin
    27 января 2016, 14:14
    0
    Пробуй так, вроде должно работать
    &where=`{"`modUserProfile`.`fullname`:LIKE":"%text%"}`
      Владислав
      27 января 2016, 14:23
      0
      И чем это отличается от
      &where=`{
      	"modUserProfile.fullname:LIKE": "%text%"
      }`
      Илья Уткин
      27 января 2016, 14:49
      +1
      &where=`[
          {"modUserProfile.fullname:LIKE": "%[[!#get.search]]%",
          "OR:modUserProfile.mobilephone:LIKE": "%[[!#get.search]]%"}
      ]`
        Владислав
        27 января 2016, 14:54
        0
        Сейчас так и стоит, но я описал выше почему этот вариант не подходит.
        Получается вот такой вызов в логе:
        WHERE  ( `modUser`.`active` = 1 AND `modUserProfile`.`blocked` = '0' AND `modUserGroupMember`.`user_group` IN ('2') AND `modUserProfile`.`fullname` LIKE '%Рога%' OR `modUserProfile`.`mobilephone` LIKE '%Рога%' )
        А нужно:
        WHERE  ( `modUser`.`active` = 1 AND `modUserProfile`.`blocked` = '0' AND `modUserGroupMember`.`user_group` IN ('2') AND (`modUserProfile`.`fullname` LIKE '%Рога%' OR `modUserProfile`.`mobilephone` LIKE '%Рога%' ))
        То есть скобки добавить.
          Илья Уткин
          27 января 2016, 14:58
          +1
          Точно так стоит? У меня здесь 4 скобки — две открывающие и две закрывающие, пара квадратных и пара фигурных
            Владислав
            27 января 2016, 15:03
            0
            Точняк. Теперь все работает! Спасибо тебе большое!
            Я изначально ориентировался на эту статью https://bezumkin.ru/training/course2/3006/
            Тут по другому показано…
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        7