L'idée est d'ordonner le résultat par leur position respective dans le tableau. Dans ce cas MySQL FIND_IN_SET
fonction peut vous aider.
Vous pouvez ajouter l'ordre suivant :
ORDER BY FIND_IN_SET(car.id,'3,10,7')
Remarque : Vous devez convertir cette commande par instruction dans votre équivalent cake php mysql
requête.
Exemple d'entrée :
requête :
SELECT *
FROM cars
id
2
3
4
5
6
7
8
9
10
11
Sortie :
requête :
SELECT *
FROM cars
WHERE cars.id IN (3,10,7)
ORDER BY FIND_IN_SET(cars.id,'3,10,7')
id
3
10
7
Consultez la SQLFIDDLE DEMO ici
Modifier :
Je ne connais pas la CAKE PHP syntax
dans la construction de la requête mysql.
Mais la requête équivalente dans cake php mysql
peut être quelque chose comme ça :
$cars = $this->car->find('all', array(
'conditions' => array(
'car.id' => array(3, 10, 7)
),
'limit' => 3,
'order' => array(FIND_IN_SET('car.id' , '3,10,7'))
));