作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用 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 数组。 使用上述技术会保留检索博客文章时的相关顺序吗?
最佳答案
如果这让您感觉更好,您可以使用 ExpressionBuilder。
$ex = $em->getExpressionBuilder();
$dql = 'SELECT b FROM BlogPost b WHERE ' . $ex->in('b.id', $ids));
$query = $em->createQuery($dql);
function cmp($a, $b) {
global $ids;
return (array_search($a->getId(), $ids) < array_search($b->getId(), $ids)) ? -1 : 1;
}
usort($res, 'cmp');
它更干净一些,但与屏幕后面的功能相同。
关于doctrine-orm - 这是使用 Doctrine2 的 WHERE IN 表达式处理有序数组的正确方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5434718/
我是一名优秀的程序员,十分优秀!