Dit is de enige oplossing die ik heb gevonden om de bestelling te behouden. Gebruik een uitdrukking, zelfs als dat veld bestaat of niet. Op die manier is de bestelling degene die je zou verwachten:
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));
}