Поиск по extended на русском и Английском

Долго ковыряя всякие where которые не работают:

[[!pdoUsers? 
&sortdir=`DESC` 
&tpl=`user` 
&where=`{"`modUserProfile`.`extended`:LIKE":"%\"callsign\":\"РУССКИЙ ЯЗЫК\"%"}`
]]
набросал рабочий механизм долгожданного поиска для сниппета))

$pole = 'pole';
$string = 'Слово';
$string = json_encode($string); // кодируем в JSON строку
$string = str_replace(array("'",'"'),'',$string); // убрать кавычки
$string = str_replace('\\','\\\\\\', $string); // экранировать обратные слеши

    $c = $modx->newQuery('modUserProfile');
    $c->leftJoin('modUser', 'User');
    $c->select('User.*');
    $c->select('modUserProfile.*');
    $c->where(array('extended:LIKE' => '%'.$pole.'":"'.$string.'%'));
    $c->prepare();
    $c->stmt->execute();
    
    $res = $c->stmt->fetchAll(PDO::FETCH_ASSOC);
    if(!empty($res)){//если найдено
echo "<pre>";
    print_r($res);
    }
Поиск по extended на русском и Английском или поиск по дополнительным полям.
Записывать в эти поля данные лучше в одном регистре чтобы не возникло проблем с поиском из за особенностей json.

***************
Добавил в результаты работы кода еще таблицу Users =)))

Кто желает улучшить код — я только за.
Konstantin
18 января 2016, 10:18
modx.pro
2
1 733
+1

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

Василий Наумкин
18 января 2016, 13:30
+2
Что только не придумают, лишь бы не искать нормально по отдельной таблице.
    Волков Николай
    19 января 2016, 02:19
    0
    Пускай придумывают :-) мне очень даже повысили настроение:-)
    Konstantin
    18 января 2016, 14:49
    +1
    Добавлен LeftJoin в код ) так что теперь код выводит всю инфу о пользователе при поиске по EXTENDED

    $c->leftJoin('modUser', 'User');
        $c->select('User.*');
        $c->select('modUserProfile.*');
      Сергей Шлоков
      18 января 2016, 18:39
      +1
      В данном варианте ключи массива будут неожиданными для неподготовленного человека. Ругаться будет. Заклятье еще какое наложит. :)
        Волков Николай
        19 января 2016, 02:29
        0
        Мне кажется, что гораздо большей большей неожиданностью для автора будет стоящий перед ним оживший компилятор PHP.
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        5