具有与传入参数的值一样多的结果的 SQL 准则查询

假设我给一个函数一个数组:


$arrValues = ['19', '4', '4', '18', '19']

到一个函数:


$objRequeteDoctrine = $this->getEntityManager()->createQueryBuilder()

    ->select('o')

    ->from('xxxxxx', 'o')

    ->where('o.id IN (:values)')

    ->andwhere('o.actif = 1')

    ->setParameter(':values', $arrValues );


return $objRequeteDoctrine->getQuery()->getResult();

在这里,它将检索 3 个对象(删除重复项)。但是如果我想检索 5 个重复的对象怎么办?那可能吗 ?


谢谢。


倚天杖
浏览 139回答 1
1回答

墨色风雨

使用 Doctrine 实现这一点可能不是您问题的答案,但可以解决您的问题。之后生成完整数组怎么样?$arrValues = ['19', '4', '4', '18', '19'];$objRequeteDoctrine = $this->getEntityManager()->createQueryBuilder()    ->select('o')    ->from('xxxxxx', 'o')    ->where('o.id IN (:values)')    ->andwhere('o.actif = 1')    ->setParameter(':values', $arrValues );$result = $objRequeteDoctrine->getQuery()->getResult();// Get the object ids in a separate array to find their position in the result$idsOnly = [];foreach($result as $entity) {    $idsOnly[] = $entity->getId();}// Find the key of the object by id in the first result$fullResult = [];foreach ($arrValues as $id) {    $keyFound = array_search($id, $idsOnly);    if ($keyFound !== false) {        $fullResult[] = $result[$keyFound];    }}return $fullResult;
打开App,查看更多内容
随时随地看视频慕课网APP