如何使用cakephp和mongo在find中传递变量

如何使用cakephp和mongo在find中传递变量,php,mongodb,cakephp,Php,Mongodb,Cakephp,我有个问题。以前,我在cakephp应用程序中使用mysql。我如何在数据库中搜索非常简单,如: $user = $this->User->find('first', array('conditions' => array('id' => $id))); 但是当我开始使用MongoDB时,我不能再使用$id了 我试着询问: $id = 1; $user = $this->User->find('first', array('conditions' =>

我有个问题。以前,我在cakephp应用程序中使用mysql。我如何在数据库中搜索非常简单,如:

 $user = $this->User->find('first', array('conditions' => array('id' => $id)));
但是当我开始使用MongoDB时,我不能再使用$id了

我试着询问:

$id = 1;
$user = $this->User->find('first', array('conditions' => array('id' => $id)));
// This query wont work

$id = '1';
$user = $this->User->find('first', array('conditions' => array('id' => $id)));
// This will work
我必须在撇号中包含一个值。但在我的应用程序中,我使用的会话变量不包含任何撇号


如何使变量不包含撇号,并且仍能使查询正常工作。

应该使用“\u id”而不是普通的“id”。

$this->set('user',$user)
$this->set(压缩(“用户”)
(string)$id
在第二个查询中代替
$id
总是通过显式字符串进行查找,但是这可能更多地归因于糟糕的数据库设计,因为数字是一个字符串。嗨,Dipesh,不是$user,而是我遇到问题的$id。谢谢,这两种方法应该完全一样。数据库中的id字段是什么类型的?首先是如何将值保存到MongoDB。我使用插件(MongDB)生成的id(24个字符长)集成了它,它与您提到的代码配合得很好。