2012-02-06 9 views
2

私は記事と呼ばれるテーブルにクエリがあります。入力でクエリを注文する

$q = Doctrine_Query::create() 
        ->from('article a') 
        ->WhereIn('a.name', $input) 
        ->execute(); 

$input = array(
    0 => Tomato, 
    1 => Apple, 
    2 => Banana 
); 

すべての入力があります。しかし、クエリの出力は、Apple、Banana、Tomatoの順番が異なります。私は入力のような注文をしたいですか?どうすればそれを実現できますか?

+1

1、興味深い質問:-)時に細かいないアイデアを私に適していません。私はあなたがDQLでそれを行うことができるとは思わない。 – greg0ire

+2

[this](https://groups.google.com/group/doctrine-user/browse_thread/thread/ffac5e58feac9ef9?pli=1)スレッドをチェックしてください。解決策ではありませんが、回避策です。 – Maerlyn

答えて

2

私はRDBMSとしてMySQLを持っていたプロジェクトでは、このようなものを使用:

$ids = array(2,9,3,64,23,38); // example IDs 
$qry->addOrderBy("FIND_IN_SET(q.id, '" . implode(",", $ids) . "')"); 

これは$idsの値が既知の信頼できる、としXapianの検索クエリから来たプロジェクトでした検索用語との関連性によって順序付けられる。 FIND_IN_SET()を使用すると、適切なドキュメントを取得し、検索結果ページの関連性の順に提示することができました。

免責事項:私はこの機能のためのサポートのレベルを知りませんが、それはしかし...

関連する問題