Sadikhasan
Sadikhasan

Reputation: 18600

Cakephp with mongoDB WHERE condtion not worked

I am newer in mongoDB with cakephp.

CakePHP Code

$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'])))));

It's equvivalent mongoDB Query

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

My problem is cakephp generate automatic mongoDB query but it not working. SO my question is :

I have to set any configuration for it or install any plugin for that Or I have to written code for that. If more information required I will give.

Upvotes: 0

Views: 123

Answers (1)

Sammaye
Sammaye

Reputation: 43884

It seems Cake PHP directly transposes the query into MongoDBs own query document as such your query is completely wrong, you should try:

$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'])
     ))
);

Something like that.

Upvotes: 2

Related Questions