pdoTools: условие WHERE с REGEXP

Как написать в pdoTools условие с REGEXP?

Вот пытаюсь засунуть в where конструкцию такого вида:

{var $whereArr[]="(TVparam1.value REGEXP 'aaa')"}
...
{var $whereArr[]="(TVparam2.value = 'bbb')"}
...
{if $whereArr}
        {var $wh = '["' ~ $whereArr | join : ' AND ' ~ '"]'}
{/if}

{$_modx->runSnippet('pdoResources', [
    ....
    'where' => $wh,
    ....
])}
В логе вывода появляется строка: Added where condition: 0=(TVparam1.value REGEXP aaa),
но в результирующем запросе этого условия нет :(

Если это: {var $whereArr[]="(TVparam1.value REGEXP 'aaa')"} удалить или поменять на любую другую конструкцию, где нет REGEXP все прекрасно работает.

@Василий Наумкин, pdoTools вообще поддерживает создание условий с REGEXP?

UPD: судя по всему вся проблема в xPDO, который кастрированный и не поддерживает REGEXP:(, github.com/modxcms/xpdo/pull/119

В связи с этим вопрос… как реализовать переписать такое условие с чистого mysql:

WHERE `tmplvarid`=6 and `value` REGEXP '^62$|^62\\|\\||\\|\\|62$|\\|\\|62\\|\\|'

по человечески: выбрать поля ТВ (id=6), у которых значения:
либо начинаются на 62
либо заканчиваются на 62
равно 62
содержит 62
но при этом не выбирать скажем 162 или 624

т.е. эти строки должны попасть в выборку:
62
10||62
62||10
10||62||89
10||62||89||162

а этих в выборке не должно быть:
162
162||10
10||162
10||162||189
10

UPD2
РЕШЕНИЕ: в стиле «сам спросил, сам ответил»:
В общем чтоб кастрированный xpdo выбрал то что надо, приводим запрос к такому виду:
WHERE `tmplvarid`=6 and `value` = '62' OR `value` LIKE '%||62||%' OR `value` LIKE '%||62' OR `value` LIKE '62||%'
Bert
24 апреля 2019, 11:37
96
0

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

Fi1osof
25 апреля 2019, 01:02
0
РЕШЕНИЕ: в стиле «сам спросил, сам ответил»:
Решение не очень годное. Для вашего случая больше вот это подойдет: modx.pro/development/7236
И если правильно прочитаете написанное, сможете и REGEXP вызвать, но бегать регуляркой по такой строке — не самое правильное решение.
    Bert
    25 апреля 2019, 09:48
    0
    Николай, согласен, что решение не оптимально, но рабочее :)
    Разница во времени выполнения sql-запроса есть, но она не критична (в данном конкретном случае, для конкретного сайта).

    На вашу заметку когда- то давно натыкался, но так и не смог найти. Теперь занес в закладки.

    Рад, что не забываете о MODx :)
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.