我有一条简单的记录,应该根据查询返回。一旦尝试获得结果,就会出现以下错误:
游标不能产生多个迭代器
我拥有的代码非常简单:
$db = \core\databaseUtilities\getDbConnection();
$filter = [ 'email' => $email ];
$query = new \MongoDB\Driver\Query($filter);
$res = $db->executeQuery($db->dbName.".users", $query);
$records = $res->toArray();
它在最后一行失败。
我在网上找到了一些如何查询它们的代码示例,它们看起来几乎是相同的。这是我使用的参考:http://php.net/manual/en/class.mongodb-driver-cursor.php
答案 0 :(得分:0)
我发现了问题,并且与代码无关。我正在发布答案,因为其他人可能会遇到相同的问题。这与我的IDE Visual Studio代码有关。但是,我认为这可能不限于我的IDE。问题是我在$ res-> toArray()上有一块手表。因此,当代码转到示例中的最后一行时,它试图再次进行迭代。我卸下手表后,问题就消失了,无需更改代码。
答案 1 :(得分:0)
您可以使用PHP的iterator_to_array函数,如MongoCursor文档的example中所述:
$res = $db->executeQuery($db->dbName.".users", $query);
$records = iterator_to_array($res);