2012-03-31 13 views
1

におけるクエリの「IN」と条項に従って、クエリ結果の順序を取得するには、我々は、クエリケーキPHPやケーキのPHPでmysqlの

$array = array(8,6); // order in 'In' clause 
$condition = array('Video.id' => $array); 
$videos = $this->Video->find('all', array('conditions' => $conditions)); 

//The query will be like below 
SELECT * FROM `videos` AS `Video` WHERE `Video`.`id` IN (8,6); 

の「IN」と条項に従って、クエリ結果の順序を得ることができる方法であります現在、それは私が実際に結果を盗んではないでしょう

Array 
(
    [0] => Array 
    (
     [Video] => Array 
     (
      [id] => 8 
     ) 

    ) 

    [1] => Array 
    (
     [Video] => Array 
     (
      [id] => 6 
     ) 

    ) 

) 

注文DESCまたはASCのようにそれを必要とする

Array 
(
    [0] => Array 
    (
     [Video] => Array 
     (
      [id] => 6 
     ) 

    ) 

    [1] => Array 
    (
     [Video] => Array 
     (
      [id] => 8 
     ) 

    ) 

) 

として結果が得られますI nオーダー。どのようにケーキのPHPを使用して後退することができますか?

これはmysqlで行うことができるかどうか私はケーキのPHPを使用していますか?

答えて

2

ORDERを使用して、それを並べ替えることができますは、CakePHPのオプションですか?コメントに反応して

$this->Video->find('all', array('conditions' => $conditions, 'order' => array('Video.id DESC'))); 

$this->Video->find('all', array('conditions' => $conditions, 'order' => array('FIELD(Video.id, 7, 4, 9)'))); 
+1

をそれを行うことはできませんので、 IN(7,4,9)、広告オーダー7-4-9が必要ですか? – kappa

+0

あなたのために私の答えを編集しました。 – MichaelRushton

+0

あなたは私の解決策を達成しました:) – kappa

-1

なぜあなたのSELECT文で*を使用するためのベストプラクティスではありません

SELECT * FROM `videos` as `Videos` WHERE `Videos`.`id` IN (8,6) ORDER BY `Videos`.`id` DESC 

を書きません。 それが役立つかどうか教えてください。

EDIT

必要であれば、我々はまた、別の方法

Order By Case `Video`.`id` 
When 8 Then 1 
When 1 Then 2 
When 3 Then 3 
END 
+0

いいえ、あなたは8,1,3をしたい場合は、IDを検索する場合、何を – kappa

1
ORDER BY FIELD("videos"."id",8,6) 

私はあなたがあなたもこの方法でELTの機能を使用することができますケーキの検索

でそれを使用することができます引用確信している:

ORDER BY ELT(videos.id, 8,1,6,2,n,3,.....) 
0

これは正常に動作します

$order = array("FIND_IN_SET(Video.id, '8,6')"); 

$result = $this->Video->find('all', array('conditions' => $conditions,'order' => $order); 
0
SELECT * FROM table WHERE id IN (1,2,3,4,5) 

上記のクエリ はそうのようにCakePHPに変換することができます。

<?php 
    $ids = array(1,2,3,4,5); 
    $this->Model->find('all', array('conditions' => array('Model.id' => $ids))); 
?> 
関連する問題