Если иначе в порядке по пункту в БД API Drupal

Я имею Drupal 7 сайт. я использую dbApi Drupal. Теперь у меня есть запрос, где мне нужно заказать записи.

Структура таблицы: -

  • ALBUMID
  • Название альбома
  • Дата создания альбома
  • Дата выхода альбома

Теперь мое требование, если Album Release Date не NULL, тогда сортируйте это, иначе используйте Album Created Date для сортировки.

$query = db_select('node', 'n');
$query->condition('n.type', 'albums', '=')
        ->condition('status', 1) //Published.
        ->fields('n', array('nid'))
        ->orderBy('field_album_release_date_value', 'DESC')
        ->execute();
$result = $query->execute();

Любая помощь высоко ценится.

1 ответ

Да, это возможно. Вы должны использовать addExpresion($expression).

$query = db_select('node', 'n');
$query->condition('n.type', 'albums', '=')
    ->condition('status', 1) //Published.
    ->fields('n', array('nid'));
$query->addExpression('IF(n.field_album_release_date_value is null,'
    . 'n.field_album_release_date_value, n.field_album_create_date_value)'
    . ' as available_date');
$query->orderBy('available_date', 'DESC');
$result = $query->execute();

Это не проверялось, поэтому вам может потребоваться настроить его, но факт заключается в том, что вы можете использовать addExpression для вставки функций sql, таких как min max или в вашем случае if.

Другие вопросы по тегам