別の質問で発見したように、Doctrineを使用してエンティティとして300k行をロードすることはお勧めできません。また、少なくとも1ギガバイトのメモリを消費します。
NativeQuery
とにかくビット単位の演算が必要だったので、結果にa以上を使用すると思いまし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
したとき、コードがループを実行するたびにインデックスが実際にインクリメントされることに気づきました。これはドキュメントと矛盾しています。私は何か間違ったことをしていますか、それとも正直な間違いを発見しましたか?