xPDOExpression
Последнее обновление not available | История страницы | Улучшить эту страницу | Сообщить о проблеме
Support the team building MODX with a monthly donation.
The budget raised through OpenCollective is transparent, including payouts, and any contributor can apply to be paid for their work on MODX.
Backers
Budget
$194 per month—let's make that $500!
Learn morexPDO\Om\xPDOExpression — неизменяемый объект-значение, оборачивающий фрагмент SQL, чтобы xPDO мог вставить его дословно вместо привязки в качестве параметра. Используйте его везде, где xPDOQuery принимает значение колонки или элемент SELECT, и вам нужно SQL-выражение: вызов функции (NOW(), CURRENT_TIMESTAMP), арифметическое выражение (counter + 1) или агрегат с псевдонимом (COUNT(*) AS total). Допустимые контексты — SET, SELECT, WHERE, HAVING, GROUP BY и ORDER BY.
Выражение подставляется без кавычек, экранирования и параметризации, поэтому безопасность остаётся на совести вызывающего.
[!WARNING] Никогда не передавайте неочищенные пользовательские данные в
xPDOExpressionили в xPDO::expression(). Строка вставляется в сгенерированный SQL как есть и может привести к SQL-инъекции.
Создание выражения¶
Класс объявлен final; создавайте экземпляры с помощью фабрики xPDO::expression():
$expr = $xpdo->expression('NOW()');
Примеры¶
Сортировка по сырому выражению:
$query = $xpdo->newQuery('modResource');
$query->sortby($xpdo->expression('COUNT(*)'), 'DESC');
Использование выражения как привязанного значения в WHERE:
$query = $xpdo->newQuery('modResource');
$query->where(array(
'createdon:<=' => $xpdo->expression('NOW()'),
));
Смотрите также¶
Support the team building MODX with a monthly donation.
The budget raised through OpenCollective is transparent, including payouts, and any contributor can apply to be paid for their work on MODX.
Backers
Budget
$194 per month—let's make that $500!
Learn more










