2016-01-06 197 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) 

與$選項。 這是一個更簡潔的方式(至少在我看來)管理查找選項,如果需要的話,一旦它們被設置爲變量,就可以重用它。

相關問題