2011-08-26 66 views
1

我有一個對象$this->user它是型號User。這個目的是通過$this->Auth->user在我的應用程序控制器填充像這樣:CakePHP模型鏈查找

$this->user = ClassRegistry::init('User'); 
$this->user->set($this->Auth->user); 

就像一個魅力。如果我的print_r了$這個 - >用戶在我控制它給了我:

User Object ([validate] => Array (blah blah blah

一個典型的對象。現在我有一個Group型號,屬於User,用戶有很多組。這些變量在模型中正確設置。現在我想找到所有組是誰在記錄該特定用戶所以,我想這一點:

$groups = $this->user->Group->find('list', array('fields'=>array('id', 'group_name')))

的關鍵是,我想用這個 - $>用戶自動篩選基於本集團查詢在$ this-> user的owner_id上。對我而言,如果我有一個代表用戶的特定對象,並且基於該用戶進行了組查詢,那麼它應該只返回相關的組。

問題是$組中包含所有條目,而不是顯然是我只希望從當前用戶獲得的條目。我不明白爲什麼我需要爲查找函數添加"conditions"=>"user_id"=$this->Auth->user('id')參數,因爲我已經通過模型鏈指定了我正在使用的用戶。

任何想法爲什麼這不起作用?它運行的sql語句只是一個SELECT WHERE 1 = 1(所以根本不需要過濾)。

回答

0

不,對象用戶的行爲更像一個類而不是對象。你可以說Cake沒有完全實現Active Record模式(我認爲Cake 3.0可以解決這個問題,不確定)。所以是的,你仍然需要爲查找設置條件。你不必設置($ this-> Auth-> user);

你可能不是很熟悉Cake:在Cake中,你根本不需要實例化Model對象。它們是基於您指定的當前控制器和模型關係爲您創建的。

+0

好的謝謝你的回答。我仍然在學習蛋糕,是的。我有這個變量實例化的唯一原因是因爲我想以這種方式使用它 - 因爲這是不可能的,那麼你是對的 - 我沒有用。 – MikeMurko