Jump to main content Jump to doc navigation

xPDO\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

  • modmore
  • STERC
  • Digital Penguin
  • Jens Wittmann – Gestaltung & Entwicklung
  • CrewMark
  • Fabian Christen
  • Sepia River Studios
  • Dannevang Digital
  • Alex
  • A. Moreno
  • Chris Fickling
  • Stéphane Jäggi
  • Murray Wood
  • Anton Tarasov
  • JT Skaggs
  • deJaya
  • Lefthandmedia
  • eydolan
  • Following Sea
  • Guido Gallenkamp
  • YJ
  • Raffy
  • Snow Creative
  • Nick Clark
  • Guest
  • Helen
  • krisznet
  • Yanni
  • Richard

Budget

$194 per month—let's make that $500!

Learn more