【问题标题】:Order query by input输入订单查询
【发布时间】:2012-02-28 06:38:55
【问题描述】:

我在名为 article 的表中有一个查询。

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

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

我找到所有输入。但查询的输出顺序不同:Apple、Banana、Tomato。我想要输入的顺序?怎么实现?

【问题讨论】:

  • +1,有趣的问题……不过不知道。我怀疑你可以在 DQL 中做到这一点。
  • 查看this 线程,这不是解决方案,而是解决方法。

标签: php symfony1 doctrine doctrine-1.2


【解决方案1】:

我在一个将 MySQL 作为 RDBMS 的项目中使用了类似的东西:

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

这是在一个项目中,$ids 中的值是已知且可信的,并且来自 Xapian 搜索查询,该查询按与搜索词的相关性排序。使用FIND_IN_SET() 使我能够检索到正确的文档并按照搜索结果页面上的相关性顺序显示它们。

免责声明:我不知道对此功能的支持程度,但当时它很适合我 :-)

【讨论】:

    猜你喜欢
    • 2021-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    相关资源
    最近更新 更多