Ý tưởng là sắp xếp kết quả theo vị trí tương ứng của chúng trong mảng. Trong trường hợp này, MySQL FIND_IN_SET
chức năng có thể giúp bạn.
Bạn có thể thêm thứ tự sau theo câu lệnh:
ORDER BY FIND_IN_SET(car.id,'3,10,7')
Lưu ý: Bạn cần chuyển đổi đơn đặt hàng này bằng câu lệnh trong cake php mysql
tương đương của bạn truy vấn.
Đầu vào mẫu:
truy vấn:
SELECT *
FROM cars
id
2
3
4
5
6
7
8
9
10
11
Đầu ra:
truy vấn:
SELECT *
FROM cars
WHERE cars.id IN (3,10,7)
ORDER BY FIND_IN_SET(cars.id,'3,10,7')
id
3
10
7
Kiểm tra SQLFIDDLE DEMO tại đây
Chỉnh sửa:
Tôi không biết CAKE PHP syntax
trong việc xây dựng truy vấn mysql.
Nhưng truy vấn tương đương trong cake php mysql
có thể là một cái gì đó như thế:
$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'))
));