这是使用 Doctrine2 的 WHERE IN 表达式处理有序数组的正确方法吗?
使用 Zend Lucene Search,我返回一个按相关性排序的 ID 列表,这些 ID 映射到我将从数据库中获取的博客记录。
这是使用 Doctrine2 的 WHERE IN 表达式处理数组的正确方法吗:
$dql = "SELECT b FROM BlogPost WHERE b.id IN (" . implode(', ', $ids) . ")";
$query = $em->createQuery($dql);
...
或者是否有更好的方法将实际的 $ids 数组作为参数传递给查询?
此外,Zend Search 根据相关性返回 ID 数组。 使用上述技术会保留检索博客文章时的相关顺序吗?
Using Zend Lucene Search, I am returning a list of relevance-ordered IDs that map to blog records that I will fetch from the database.
Is this the proper way of handling an array with Doctrine2's WHERE IN expression:
$dql = "SELECT b FROM BlogPost WHERE b.id IN (" . implode(', ', $ids) . ")";
$query = $em->createQuery($dql);
...
Or is there a better way of maybe passing in the actual $ids
array as a parameter to the query?
Also, the Zend Search returns the array of IDs based on relevance. Will using the above technique preserve the order of relevance in retrieving the blog posts?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果这让您感觉更好,您可以使用 ExpressionBuilder。
它更干净一些,但与屏幕后面的情况相同。
If it makes you feel better, you can use the ExpressionBuilder.
It's a bit cleaner, but does the same as you behind the screens.
您应该通过 setParameter() 函数传递 $ids 数组,因为这是原则上的最佳实践:
我认为 IN 语句不会保留传递的 ID 的顺序,因为 IN 将匹配第一个找到的 $id ,而不取决于顺序。
You should pas the $ids array through setParameter() function as this is a best practice in doctrine:
I think the IN statement will not preserve the order of the passed ID's as IN will match the first found $id not depending on the order.