我在使用CakePHP 2.0。标题有点误导人,所以为了澄清 - 我有一个会话数组,当用户将产品添加到购物车时,该数组会填充产品的 ids。这个数组看起来像这样 [0] => 25, [1] => 70 等等。 假设这个数组被称为 $products。
我的问题是,是否有可能通过使用“find”模型函数('conditions' => array('Product.id' => $products))获取的数组按照$products数组的索引排序,而不是按Model.field值进行排序(如'order'选项),这样当我在视图中呈现产品内容时,我可以获得以用户添加它们的顺序排序的所有那些在购物车中的产品。
这里有一个例子 - Session数组 $products:
[0] => 35,
[1] => 15,
[2] => 25
然后我将这个数组传递给find函数的条件:
$list = $this->Product->find('all', array('conditions' => array('Product.id' => $products)));
最终,$list 给了我一个按照 product.id 排序的数组。因此,不再有:[0] => Array
(
[Product] => Array
(
[id] => 35 )),
[1] => Array
(
[Product] => Array
(
[id] => 15 )),
[2] => Array
(
[Product] => Array
(
[id] => 25 ))
我得到:
[0] => Array
(
[Product] => Array
(
[id] => 15 )),
[1] => Array
(
[Product] => Array
(
[id] => 25 )),
[2] => Array
(
[Product] => Array
(
[id] => 35 ))
目前所有的答案都不能解决我的问题。请注意我给出的例子,它很简单,但提供的答案是不同的关键之处。
再次强调,我需要最终数组 $list 按照会话数组 $products 的索引排序,但是我得到的 $list 是按照 Product.id 字段排序的,即使我没有指定任何 'find(array('order'=> ...))'
,甚至尝试将其设置为 false。