A ideia é ordenar o resultado por sua respectiva posição na matriz. Neste caso MySQL
FIND_IN_SET
função pode ajudá-lo. Você pode adicionar a seguinte ordem por declaração:
ORDER BY FIND_IN_SET(car.id,'3,10,7')
Observação: Você precisa converter esta ordem por instrução em seu equivalente
cake php mysql
inquerir. FIND_IN_SET
Amostra de entrada:
consulta:
SELECT *
FROM cars
id
2
3
4
5
6
7
8
9
10
11
Saída:
consulta:
SELECT *
FROM cars
WHERE cars.id IN (3,10,7)
ORDER BY FIND_IN_SET(cars.id,'3,10,7')
id
3
10
7
Verifique a SQLFIDDLE DEMO aqui
Editar:
Eu não sei
CAKE PHP syntax
na construção de consulta mysql. Mas a consulta equivalente em
cake php mysql
pode ser algo assim:$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'))
));