2

サイトがありDrupal 7ます。dbApiDrupalを使用しています。これで、レコードを注文する必要があるクエリができました。

テーブル構造:-

  • アルバムID
  • アルバム名
  • アルバム作成日
  • アルバムのリリース日

今私の要件は、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 を使用して min max のような SQL 関数を挿入できます。

于 2016-09-06T05:12:41.447 に答える