這個想法是通過它們在數組中的位置排序結果。在這種情況下,MySQL FIND_IN_SET
函數可以幫助你。
您可以通過語句添加順序如下:
ORDER BY FIND_IN_SET(car.id,'3,10,7')
注:您需要通過語句進行等價cake php mysql
查詢轉換這個順序。
的MySQL FIND_IN_SET()返回一個字符串的位置(如果存在) (作爲子串)的字符串列表內。字符串列表本身是一個 字符串包含以','(逗號)字符分隔的子字符串。
當搜索字符串不會在 字符串列表存在此函數返回0和返回NULL如果任一參數爲NULL。
FIND_IN_SET
樣品輸入:
查詢:
SELECT *
FROM cars
id
2
3
4
5
6
7
8
9
10
11
輸出:
查詢:
SELECT *
FROM cars
WHERE cars.id IN (3,10,7)
ORDER BY FIND_IN_SET(cars.id,'3,10,7')
id
3
10
7
檢查SQLFIDDLE DEMO here
編輯:
我在建立mysql查詢時不知道CAKE PHP syntax
。
但cake php mysql
等效查詢可能是類似的東西:
$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'))
));
我需要在CakePHP的代碼沒有MySQL代碼PLZ。另外我嘗試了FIND_IN_SET,我有一個錯誤調用未定義的函數FIND_IN_SET() – Dani
我不知道'蛋糕php'。看看這個[post](http://stackoverflow.com/questions/9545045/how-to-use-find-in-set-in-cakephp-find-method)。它可能會幫助你。 – 1000111
請查看我答案中的編輯部分。它也可能有幫助。 @Dani – 1000111