Symfony 2 Doctrine通过有序的id数组找到

Ben*_*min 21 php doctrine dql symfony

我正在寻找一种方式来使用DoctrineSymfony 2发现使用ID的有序阵列项目.

我有一个带有id(主键)和标题的Card实体.

我有ID(主键)和一个listCards一个ListCards实体(编码ID数组:["16", "2", "84"])

我首先获取列表,然后我需要按顺序查找带有这些ID的卡片.

我试着像:

$idsArray = ["16", "2", "84"];
$cardRepository->findby($idsArray);
Run Code Online (Sandbox Code Playgroud)

DoctrineASC顺序取出我的卡片.

ORDER BY FIEDS sql方法似乎不受doctrine支持.

这种排序有什么简单的解决方案吗?

谢谢(抱歉我的英文不好).

Max*_*sky 28

您可以像以下一样使用它:

$cardRepository->findBy( array('id' => $idsArray), array('id' => 'DESC') );
Run Code Online (Sandbox Code Playgroud)

还可以查看官方学说文档,了解有关如何使用排序,限制和偏移作为方法中第二到第四参数的更多详细信息findBy.

  • 感谢您的回答,但我不需要 DESC 顺序,而是我的数组顺序。我在“findBy”方法中没有找到任何允许这种功能的参数。 (2认同)
  • 我无法直接在 Doctrine 中执行此操作,但这里有一种从 Postgres 获取指定顺序(本例中为 4, 7, 1, 6)的方法: ```select * from my_table join unnest('{4,7 ,1,6}'::varchar[]) 与 o(my_id, ord) on o.my_id = my_table.my_id order by ord asc;``` (2认同)

Laj*_*pad 0

您可以创建一个辅助表,在其中存储有序组元素,并具有以下数据:(group_id, card_id, order)

您可以按 _id 搜索group、排序order并阅读card_id.