Différence de tri entre {id_patate IN ...} et {id_patate?}
Avec un critère {id_patate IN ...}
, le compilateur ajoute un ORDER BY FIELD(id_patate,...)
à la requête, du coup les résultats sont triés dans l'ordre du IN
: joie.
En revanche, avec un critère optionnel {id_patate?}
et un array dans l'environnement, ça fait bien un IN
dans la requête par contre il n'y a pas ORDER BY
et on perd l'ordre de tri : tristesse.
Dans les 2 cas, on devrait avoir cet ORDER BY FIELD
fort pratique.
Exemples :
<BOUCLE_joie(ARTICLES){id_article IN 3,1,2}>
SELECT articles.id_article, articles.lang, articles.titre FROM spip_articles AS `articles` WHERE (articles.statut = 'publie') AND ((articles.id_article IN (3,1,2))) ORDER BY FIELD(articles.id_article,3,1,2)
<BOUCLE_tristesse(ARTICLES){id_article?}>
SELECT articles.id_article, articles.lang, articles.titre FROM spip_articles AS `articles` WHERE (articles.statut = 'publie') AND ((articles.id_article IN (3,1,2)))
Testé en SPIP 3.1.3