Поиск по extended на русском и Английском
Долго ковыряя всякие where которые не работают:
Записывать в эти поля данные лучше в одном регистре чтобы не возникло проблем с поиском из за особенностей json.
***************
Добавил в результаты работы кода еще таблицу Users =)))
Кто желает улучшить код — я только за.
[[!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 =)))
Кто желает улучшить код — я только за.
Комментарии: 5
Что только не придумают, лишь бы не искать нормально по отдельной таблице.
Пускай придумывают :-) мне очень даже повысили настроение:-)
Добавлен LeftJoin в код ) так что теперь код выводит всю инфу о пользователе при поиске по EXTENDED
$c->leftJoin('modUser', 'User');
$c->select('User.*');
$c->select('modUserProfile.*');
В данном варианте ключи массива будут неожиданными для неподготовленного человека. Ругаться будет. Заклятье еще какое наложит. :)
Мне кажется, что гораздо большей большей неожиданностью для автора будет стоящий перед ним оживший компилятор PHP.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.