Drupal 7 views_query_alter如果字段为空,则与另一个字段排序


drupal 7 views_query_alter if field empty sort with another field

我有一个视图,显示新闻类型的所有内容新闻有类似的领域:

内容 = 标题

调度程序 = 发布

在排序标准中:我想要使用两个选项对内容进行排序:使用调度程序(发布 = DESC)和 附发布日期

我想使用调度程序对内容进行排序,当调度程序字段为空时,他使用发布日期排序我已经创建了钩子视图查询更改我有一个问题如果 publishon 为空,我如何使用条件对字段进行排序,然后使用后日期排序

function custom_sort_views_query_alter(&$view, &$query) {

    if($view->name === 'articleview') {
        $view->query->add_where(1,'publish_on',  'NOT IN');
        $view->query->orderby[0]['field'] = "CASE WHEN publish_on IS NULL THEN created ELSE publish_on END";
        $view->query->orderby[0]['direction'] = "DESC";
        $view->query->orderby[1]['field'] = "created";
        $view->query->orderby[1]['direction'] = "DESC";
    }
}

如果我理解正确,你应该在你想要放置value_if_true或value_if_false的地方使用三元运算,如condition ? value_if_true : value_if_false