我需要基于在阵列

问题描述:

下面是我的代码,它的确切顺序提取数据,我想拉基于序列3的数据,10则7,我该怎么办呢?到目前为止它先拉10,然后7,然后3.我需要基于在阵列

<code> 
     $cars = $this->car->find('all', array(
     'conditions' => array(
      'car.id' => array(3, 10, 7) 
     ), 
     'limit' => 3, 
     'order' => array('car.id' => 'desc') 
    )); 

    </code> 

这个想法是通过它们在数组中的位置排序结果。在这种情况下,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')) 
    )); 
+0

我需要在CakePHP的代码没有MySQL代码PLZ。另外我尝试了FIND_IN_SET,我有一个错误调用未定义的函数FIND_IN_SET() – Dani

+0

我不知道'蛋糕php'。看看这个[post](http://*.com/questions/9545045/how-to-use-find-in-set-in-cakephp-find-method)。它可能会帮助你。 – 1000111

+0

请查看我答案中的编辑部分。它也可能有帮助。 @Dani – 1000111