我需要基于在阵列
问题描述:
下面是我的代码,它的确切顺序提取数据,我想拉基于序列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。
样品输入:
查询:
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
编辑:
我在建立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