Как мне выполнить $query->OrderBy('ПОЛЕ(node.nid, 5,12,3,6)', 'ASC')? Как выполнить $query->OrderBy('ПОЛЕ(node.nid, 5,12,3,6)', 'ASC')?
В настоящее время я конвертирую код с Drupal 7 на Drupal 8. До сих пор я не могу найти ресурсы о том, как преобразовать вызов в orderBy()
, в котором используется выражение.
$query->orderBy("FIELD(node.nid, '5,12,3,6')", 'ASC');
На основе D8 Select::OrderBy, он принимает только псевдоним или поля.
Какой код я должен использовать в Drupal 8?
2
Author: Spencer Chang, 2016-05-02
1 answers
Я нашел обходной путь, реализовав инструкцию CASE, а затем отсортировав ее по значению.
$query->addExpression("
CASE node.nid
WHEN 5 THEN 1
WHEN 12 THEN 2
WHEN 3 THEN 3
WHEN 6 THEN 4
ELSE 5
END
", 'order_field');
$query->orderBy("order_field", 'ASC');
Надеюсь, в будущем они добавят еще одну функцию для обработки этих специальных инструкций.
4
Author: Spencer Chang, 2016-05-03 11:15:54