CakePHP查找相关模型数据

CakePHP查找相关模型数据,cakephp,model,find,associations,Cakephp,Model,Find,Associations,我得到了用户和公司的培训: class Firm extends AppModel { var $name = 'Firm'; var $belongsTo = 'User'; } 以及: 一切正常,但如果用户id=例如,5,我如何搜索公司? 我用过: 我认为: <table> <tr> <th>Firma</th> </tr> <?php foreach($firms a

我得到了用户和公司的培训:

class Firm extends AppModel {
    var $name = 'Firm';
    var $belongsTo = '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>
但当我进入视图时,我得到了一个错误:


注意8:未定义的索引:firm_id[APP\views\firms\wylistuj.ctp,第9行]

'firm_id'将出现在联接表中,而不是企业模型中

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

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

您需要这样搜索:

$this->set('firms',$this->Firm->find('all',array('conditions'=>array('Firm.user_id'=>'5'))));
//user.php
class User extends AppModel {
    var $name = 'User';
    var $hasAndBelongsToMany = 'Firm';
}

//firm.php
class Firmextends AppModel {
    var $name = 'Firm';
    var $hasAndBelongsToMany = 'User';
}
这会给你想要的结果

编辑:

如果您想将您的模型与一个具有且属于多个关系的模型相关联,您需要这样编写两个模型:

$this->set('firms',$this->Firm->find('all',array('conditions'=>array('Firm.user_id'=>'5'))));
//user.php
class User extends AppModel {
    var $name = 'User';
    var $hasAndBelongsToMany = 'Firm';
}

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

要了解如何与协会合作,请阅读手册部分。

仍然不起作用。它说:未定义的索引:id[APP\views\firms\wylistuj.ctp,第9行]。我得到了如下调试SQL命令:选择User.id,User.username,User.password,[…]作为用户,其中User.id=5选择Firm.id,Firm.login,Firm.password,[…],FirmsUser.User\u id,FirmsUser.firm\u id来自firms AS firm加入firms用户作为FirmsUser ON FirmsUser.user\u id=5和FirmsUser.firm\u id=firm.id,其中1=1您可以在视图中显示的输出吗?仍然不起作用:1054:WHERE子句中的未知列'firm.user\id'您甚至有这样的列吗?为了实现这一点,您还需要在表中为公司提供一个列用户id。那么您的关联就错了。请参阅我的编辑,了解如何设置具有并属于多个关联。您也可以尝试删除应用程序/tmp/cache/文件,保留其中的文件夹不变,但删除内容。如果您对模型进行了更改,cake可能仍然使用缓存的模型。正确,但是如果他正在开发,他应该始终使用Configure::write'debug',2;在他的core.php中。这禁用了模型缓存,他得到了所有可能的错误。