Какой правильный синтаксис для CONCAT в выражении modx xpdo

Я пытаюсь разобраться с пробелами в инструменте поиска - особенно для работы с именами и фамилиями, я могу заставить свои запросы работать в командной строке, но когда я пытаюсь преобразовать их в синтаксис modx/pdo, я не получить результаты. [потому что критерии не переведены правильно]

Что у меня есть:

$criteria->where(array(
    'Entities.first_name:LIKE' => "%$searchQuery%",
    'OR:Entities.cams:LIKE' => "%$searchQuery%",
    'OR:Entities.last_name:LIKE' => "%$searchQuery%",
    'OR:Entities.company:LIKE' => "%$searchQuery%",
    'OR:CONCAT(`Entites`.`first_name`," ",`Entities`.`last_name`):LIKE' => "%$searchQuery%",
        ));

Проблема с последней строкой OR:CONCAT, если я дам запрос, мое предложение where выглядит так:

WHERE  ( 
`Entities`.`first_name` LIKE '%first last%' 
OR `Entities`.`cams` LIKE '%first last%' 
OR `Entities`.`last_name` LIKE '%first last%' 
OR `Entities`.`company` LIKE '%first last%' 
OR `CONCAT(`Entites`.`first_name`," ",`Entities` LIKE '%first last%' 
)

он добавляет обратный удар перед CONCAT и опускает.last_name)

Какой правильный синтаксис?

1 ответ

Расширенные условия часто необходимо создавать в виде строки, а не пары ключ => значение.

Следующее не совсем верно для исходного запроса, но должно дать тот же результат:

$c->where(array(
    'Entities.first_name:LIKE' => "%$searchQuery%",
    'OR:Entities.cams:LIKE' => "%$searchQuery%",
    'OR:Entities.last_name:LIKE' => "%$searchQuery%",
    'OR:Entities.company:LIKE' => "%$searchQuery%",
));
$c->orCondition("CONCAT(Entities.first_name,' ',Entities.last_name) LIKE '%$searchQuery%'");

Или передайте весь набор условий OR в виде строки, чтобы точно воспроизвести ваш запрос:

$c->where("
    Entities.first_name LIKE '%$searchQuery%'
    OR Entities.cams LIKE '%$searchQuery%'
    OR Entities.last_name LIKE '%$searchQuery%'
    OR Entities.company LIKE '%$searchQuery%'
    OR CONCAT(Entities.first_name,' ',Entities.last_name) LIKE '%$searchQuery%'
");
Другие вопросы по тегам