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中。这禁用了模型缓存,他得到了所有可能的错误。