带有mongoDB的Cakephp WHERE条件不起作用

时间:2014-07-22 07:45:20

标签: mongodb cakephp

我在使用cakephp的mongoDB中更新。

CakePHP代码

$adminData=$this->Admin->find('first',array('conditions'=>array(
                    'OR'=>array('Admin.username'=>$this->data['Admin']['username'],'Admin.email'=>$this->data['Admin']['username']),
                    'AND'=>array('Admin.password'=>AuthComponent::password($this->data['Admin']['password'])))));

它是等效的 mongoDB查询

db.admins.find( {"OR":{"username":"admin","email":"admin"},
                 "AND":{"password":"b3dfaf29547a69faaaaf63e1223bb4c479c80203"}},
                [] ).sort( [] ).limit( 1 ).skip( 0 ).hint( [] ) 

我的问题是cakephp生成自动mongoDB查询但它无法正常工作。所以我的问题是:

  

我必须为它设置任何配置或安装任何插件或者我必须为此编写代码。如果需要更多信息,我会给出。

1 个答案:

答案 0 :(得分:2)

似乎Cake PHP直接将查询转换为MongoDBs自己的查询文档,因此您的查询完全错误,您应该尝试:

$adminData = $this->Admin->find(
    'first',
     array('conditions' => array(
         '$or' => array(
             array('Admin.username' => $this->data['Admin']['username']), 
             array('Admin.email' => $this->data['Admin']['username'])
         ),
         'Admin.password'=>AuthComponent::password($this->data['Admin']['password'])
     ))
);

类似的东西。