Fre*_*oft 5 php entity doctrine symfony doctrine-orm
我有一个$newsList
包含以下值的 ID 数组 ( ):4,2,1,3
。
我正在尝试从实体的数据库中获取一些数据:
$news=$this->getDoctrine()->getRepository('Bundle:News')->findBy(array('id' => $newsList));
Run Code Online (Sandbox Code Playgroud)
$newsList
数组代表新闻实体的真实 ID。
但是当我这样做时:
foreach($news as $n){
$n->getId();
}
Run Code Online (Sandbox Code Playgroud)
ID 按顺序排列:1,2,3,4
。
如何在 foreach 中保留从头开始的顺序?
当您进行全局查询时,您可以仅按给定属性和给定排序顺序对结果进行排序,因此正如前面的答案所指出的,您不能。
为了让你的结果完全按照你给定的数组排序,你可以这样做:
$newsList = [3, 1, 4, 2];
$newsRepo = $this->getDoctrine()->getRepository('Bundle:News');
foreach ($newsList as $id) {
$new = $newsRepo->findOneBy['id' => $id];
if ($new !== null) {
$news[] = $new;
}
}
Run Code Online (Sandbox Code Playgroud)
像这样,您的结果的排序与 完全相同$newsList
,例如:
foreach ($news as $n) {
print $n->getId();
}
// Output: 3 1 4 2
Run Code Online (Sandbox Code Playgroud)