我有Drupal 7
网站。我正在使用Drupal的dbApi
。现在我有一个查询,我需要订购记录。
表格结构: -
现在我的要求是如果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();
任何帮助都非常感谢。
答案 0 :(得分:0)
是的,这是可能的。你应该使用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或者在您的情况下。