正如我在另一个问题中发现的那样,使用 Doctrine 将 300k 行作为实体加载不是一个好主意,并且会消耗至少 1 GB 的内存。
因为无论如何我都需要一些按位运算,所以我想我会使用 aNativeQuery
和iterate()
结果。但是,在第一行之后,我的值始终为空。我的代码与文档高度相似:
$sql = "SELECT `pushToken` FROM `Devices`";
$rsm = new Doctrine\ORM\Query\ResultSetMappingBuilder(self::$entityManager);
$rsm->addScalarResult("pushToken", "pt");
$query = self::$entityManager->createNativeQuery($sql, $rsm);
$iterableDevices = $query->iterate();
foreach ($iterableDevices as $row)
{
$message->addRecipient($row[0]["pt"]);
}
然而,当我var_dump
编辑$row
时,我注意到每次代码运行循环时索引实际上都会增加。这与文档相矛盾。我做错了什么,还是我发现了一个诚实的错误?