これは、注文を維持するために私が見つけた唯一の回避策です。そのフィールドが存在するかどうかに関係なく、式を使用してください。そうすれば、あなたが期待する順序になります:
if (TRUE) {
// To keep the order of the fields we have to use this hacky way.
// Use a function that will not modify the string
$query->addExpression("IFNULL(table_name.field_name, '')", 'field_name_alias');
} else {
$query->addExpression(':field', 'field_name_alias', array(':field' => NULL));
}