ここでCakePHP2.0を使用します。タイトルは少し誤解を招く可能性があるため、わかりやすくするために、ユーザーが商品をカートに追加すると、商品のIDが入力されるセッション配列があります。したがって、この配列は[0] => 25、[1]=>70などのようになります。この配列が$productsと呼ばれるとします。
私が聞きたいのは、'find'モデルの関数('conditions' => array('Product.id' => $ products))を使用して取得した配列を、一部のモデルではなくソートする可能性があることです。 .field値('order'オプションと同様)ですが、$ products配列インデックスによって、製品コンテンツを表示するときに、ユーザーが追加した順序でカート内のすべての製品を並べ替えることができます。
次に例を示します-セッション配列$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のインデックスで並べ替える必要がありますが、何も指定せず、falseに設定しようとしても、 $listはProduct.idフィールドで並べ替えられます。'find(array('order'=> ...))'