gpt4 book ai didi

doctrine-orm - 这是使用 Doctrine2 的 WHERE IN 表达式处理有序数组的正确方法吗?

转载 作者:行者123 更新时间:2023-12-02 17:55:21 24 4
gpt4 key购买 nike

使用 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com