0

我正在尝试使用 PHP/CodeIgniter 在 MongoDB 中查询,但我找不到解决方案...

我在“function1”中有第一个查询

$this->mongo_db->where("category" => getCatID("games");

在我的第二个函数“getCatID”中,我有

return $this->mongo_db->select('_id')->where("name" => $name)->get('Category');

但似乎第二个函数在函数 1 的第一个查询上继续。

我正在使用这个库...

4

1 回答 1

1

我假设您的第一个代码片段是:

$this->mongo_db->where("category", getCatID("games"));
// or…
$this->mongo_db->where(array("category" => getCatID("games")));

我没有使用过这个库,但是通过仔细阅读源代码,看起来所有查询条件设置的where()都是在类的内部$wheres属性中累积的Mongo_db。这仅由私有_clear()方法清除,该私有方法从以下公共方法调用:

任何时候调用这些终止方法中的任何一个,都$wheres将被重置。同样,如果不调用这些方法,旧的标准可能会渗透到您的下一个标准中。在您的情况下getCatID(),可能会清除早期的标准。PHP 将getCatID()在调用where()作为参数的方法之前执行,所以我希望外部where()调用会看到一个空$wheres数组。

getCatID()一种解决方案是在构建第二个查询之前自行调用。或者,您可以克隆Mongo_db实例以确保每个查询都是独立构建的。

于 2013-06-27T17:44:53.797 回答