2016-01-06 94 views
0

已经开始使用CakePHP 3.0,我觉得docummentation非常混乱,通过以下的代码段我已经genertaed下面的代码:调用一个成员函数查找()一个非对象()

if($this->Auth->User('role') != 'Admin'){ 
      $query = $users->find('all') 
       ->where(['Users.group_id' => $this->Auth->User('group_id')]); 
      $this->set('users', $this->paginate($query->all())); 
    }else{ 
     $this->set('users', $this->paginate($this->Users)); 
    } 

,哪个跑得如果用户是管理员,howver完全正常,如果他不是,则在这条线的代码符:$query = $users->find('all')

正在提供以下信息:

Call to a member function find() on a non-object 

Ť他的代码在users controller中运行。

任何帮助或指导,非常感谢。

+0

请写$ query = $ this-> Users-> find('all') –

+0

我也尝试过,但后来收到以下错误:错误:调用未定义的方法Cake \ ORM \ ResultSet ::别名() – WpDoe

+0

我希望你已经加载用户模型 –

回答

1

试试这个:

if($this->Auth->User('role') != 'Admin'){ 

    $options = [ 
      'conditions' => array(
       "Users.group_id" => $this->Auth->User('group_id') 
      )]; 

     $query = $users->find('all', $options); 


    $this->set('users', $this->paginate($query)); 
}else{ 
    $this->set('users', $this->paginate($this->Users)); 
} 

我觉得你的问题是,你基本上是叫“发现”不正确。

$query = $users->find('all') ->$options 

(不是你确切的代码,但实际上你做了什么,以帮助比较我的解决方案)应该高于申报

$query = $users->find('all', $options) 

与$选项。 这是一个更简洁的方式(至少在我看来)管理查找选项,如果需要的话,一旦它们被设置为变量,就可以重用它。

相关问题