Comment récupérer les sujets triés par la valeur du champ personnalisé iso8601 ?

Vous voudrez transformer ceci en :

.order("COALESCE(CAST(custom_fields.value AS timestamp), custom_fields.value) DESC")

pour plus de lisibilité.

Vous triez par sortDate, et lorsque celle-ci est absente, vous utilisez createdAt. Le tout dans l’ordre décroissant. La requête renvoie les données exactement comme demandé, car 2020 est « supérieur » à la deuxième place de 2011.

Si vous voulez que les valeurs NULL soient placées en dernier, vous devez utiliser :

.order("CAST(custom_fields.value AS timestamp) DESC NULLS LAST")