Я загружаю данные из своей базы данных с помощью doctrine:
$data = $this->em->getRepository('App\\Entity\\Data')->allData();
, который создает массив с большим количеством данных:
PagesGenerator.php on line 259:
array:1696 [▼
0 => Data^ {#5430 ▼
-id: 2298
-uuid: "426441e418"
-content: "two"
-document_id: "93b7dc32f4"
}
1 => Data^ {#5434 ▼
-id: 2299
-uuid: "c1474a87a9"
-content: ""
-document_id: "93b7dc32f4"
}
2 => Data^ {#5413 ▼
-id: 2300
-uuid: "8bfd9b4893"
-content: "three"
-document_id: "edb8fa9647"
}
3 => Data^ {#5427 ▶}
4 => Data^ {#5428 ▶}
5 => Data^ {#5433 ▶}
6 => Data^ {#5431 ▶}
7 => Data^ {#5429 ▶}
У меня есть другой массив $docIds
:
array:96 [▼
0 => "3019b7a82f"
1 => "b1a4c67080"
2 => "82cf4392d7"
3 => "55768e0955"
4 => "74c6217001"
5 => "71fc4c3ebf"
6 => "35e2d3a1c6"
7 => "50c940b223"
8 => "2561ff454d"
9 => "bb447530e1"
Чтобы получить высокую производительность, мне нравится предварительно фильтровать массив $data
, чтобы он содержал только записи с document_id
s, которые являются значениями в моем массиве $docIds
;
This мой подход:
$data = $this->em->getRepository('App\\Entity\\Data')->filterByDocID($docIds);
В моем хранилище данных:
public function filterByDocID($array)
{
$query = $this->getEntityManager()
->createQuery(
"SELECT a
FROM App\Entity\Data a
WHERE document_id IN ('".$array."')");
try {
return $query->getResult();
} catch (\Doctrine\ORM\NoResultException $e) {
return null;
}
}
Но я получаю сообщение об ошибке:
Примечание: преобразование массива в строку