2011-06-14 39 views
1

我有類用戶和公司:CakePHP中找到相關的模型數據

class Firm extends AppModel { 
    var $name = 'Firm'; 
    var $belongsTo = 'User'; 
} 

和:

class User extends AppModel { 
    var $name = 'User'; 
    var $hasMany ='Post'; 
    var $hasAndBelongsToMany = 'Firm'; 
} 

一切工作正常,但我怎麼獵頭公司,如果用戶ID =例如,5? 我用:

$this->set('firms',$this->Firm->User->find('all', array('conditions'=>array('User.id'=>'5')))); 

和我的看法,我把:

<table> 
    <tr> 
     <th>Firma</th> 
    </tr> 
    <?php foreach($firms as $firm): ?> 
    <tr> 
     <td><?php echo $firm ['Firm']['firm_id']; ?></td> //line 9 
    </tr> 
    <?php endforeach; ?> 
</table> 

但是當我進入我的看法,我得到的錯誤:

"Notice (8): Undefined index: firm_id [APP\views\firms\wylistuj.ctp, line 9]"

+1

您能否在您的視圖中顯示

的輸出? – 2011-06-14 11:57:33

回答

0

'firm_id' 會在你的連接表中,而不是你的公司模型。

如果你想找顯示當前企業的id,你應該只需要這個

<td> <?php echo $firm['Firm']['id']; ?> </td> 
+0

仍然不起作用。它說:未定義的索引:id [APP \ views \ firm \ wylistuj.ctp,第9行]。 – zax 2011-06-14 11:46:24

+0

我得到像這樣的調試SQL命令: SELECT'User'.'id','User'.'username','User'.'password',[..] FROM'users' AS'User' WHERE'User '.'''' 5 SELECT'Firm'.'id','Firm'.'login','Firm'.'password',[..],'FirmsUser'.'user_id','FirmsUser' .'firm_id' FROM'firm' AS'Firm' JOIN'firm_users' AS'FirmsUser' ON('FirmsUser'.'user_id' = 5 AND'FirmsUser'.'firm_id' ='Firm'.'id')WHERE 1 = 1 – zax 2011-06-14 11:48:36

0

您需要搜索這樣的:

$this->set('firms',$this->Firm->find('all',array('conditions'=>array('Firm.user_id'=>'5')))); 

這應該給你你想要的結果。

編輯:

在你想你的模型與關聯情況下,「有,屬於一對多」的關係,你需要寫你的2款是這樣的:

//user.php 
class User extends AppModel { 
    var $name = 'User'; 
    var $hasAndBelongsToMany = 'Firm'; 
} 

//firm.php 
class Firmextends AppModel { 
    var $name = 'Firm'; 
    var $hasAndBelongsToMany = 'User'; 
} 

怎麼看您可以使用該協會,請閱讀HABTM (has and belongs to many) relationships的手冊部分。

+0

仍然無效:1054:'where子句'中的未知列'Firm.user_id' – zax 2011-06-14 12:10:00

+0

您是否還有這樣的列?爲了這個工作,你還需要在你的表中爲公司提供一個'user_id'列。 – Tim 2011-06-14 12:12:13

+0

不,我得到了表users_firms與列user_id和firm_id – zax 2011-06-14 12:22:18

相關問題