CakePHP查找相关的模型数据

时间:2011-06-14 11:26:09

标签: cakephp model find associations

我上课了用户和公司:

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]"

2 个答案:

答案 0 :(得分:0)

'firm_id'将在您的联接表中,而不是您的公司模型。

如果您想要显示当前公司的ID,您应该只需要这个

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

答案 1 :(得分: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的手册部分。