2

我有Drupal 7网站。我正在使用dbApiDrupal。现在我有一个查询,我需要在哪里订购记录。

表结构:-

  • 专辑编号
  • 专辑名称
  • 专辑创建日期
  • 专辑发行日期

现在我的要求是如果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();

任何帮助高度赞赏。

4

1 回答 1

0

对的,这是可能的。您应该使用 addExpression($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。

于 2016-09-06T05:12:41.447 回答