Drupal的DB API中的If-Else-Order-by子句
我有Drupal的DB API中的If-Else-Order-by子句,drupal,drupal-7,drupal-database,Drupal,Drupal 7,Drupal Database,我有Drupal7网站。我正在使用Drupal的dbApi。现在我有一个查询,我需要在哪里订购记录 表结构:- 白蛋白 唱片集名称 相册创建日期 专辑发行日期 现在我的要求是,如果相册发行日期不为空,则按它排序,否则使用相册创建日期进行排序 $query = db_select('node', 'n'); $query->condition('n.type', 'albums', '=') ->condition('status', 1) //Published.
Drupal7
网站。我正在使用Drupal的dbApi
。现在我有一个查询,我需要在哪里订购记录
表结构:-
- 白蛋白
- 唱片集名称
- 相册创建日期
- 专辑发行日期
相册发行日期
不为空,则按它排序,否则使用相册创建日期
进行排序
$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();
非常感谢您的帮助。是的,这是可能的。您应该使用addExpression($expression)
没有测试这个,所以您可能需要对它进行调整,但事实是您可以使用addExpression插入sql函数,如min-max或在您的例子中的if。这只能通过db_查询(“您的带条件的查询”)实现;
$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();