CakePHP 查找相关模型数据

Posted

技术标签:

【中文标题】CakePHP 查找相关模型数据【英文标题】:CakePHP find related model data 【发布时间】:2011-06-14 11:26:09 【问题描述】:

我有用户和公司类:

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】:

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

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

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

【讨论】:

还是不行。它说:未定义的索引:id [APP\views\firms\wylistuj.ctp,第 9 行]。 我得到了这样的调试 SQL 命令:SELECT User.id, User.username, User.password, [..] FROM users AS User WHERE User.id = 5 选择 Firm.id, Firm.login, Firm.password, [..], @987665334 ,FirmsUser 987654341 @ firms AS Firm AS firms_users AS FirmsUser ON(user_id 987654347 @ = 5和FirmsUser 987654350 Firm 987654350 Firm 987654350 @) WHERE 1 = 1【参考方案2】:

你需要这样搜索:

$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 的手册部分。

【讨论】:

仍然不起作用:1054:'where 子句'中的未知列'Firm.user_id' 你有这样的专栏吗?为此,您还需要在表中为公司提供一列 user_id 那么你的联想是错误的。有关如何设置“拥有并属于许多”关联的信息,请参阅我的编辑。 您也可以尝试删除您的APP/tmp/cache/ 文件(保留其中的文件夹完整,但删除内容)。如果您对模型进行了更改,蛋糕仍然可以使用缓存的。 正确,但如果他正在开发,他应该始终在他的 core.php 中使用Configure::write('debug', 2);。这会禁用模型缓存,他会得到所有可能的错误。

以上是关于CakePHP 查找相关模型数据的主要内容,如果未能解决你的问题,请参考以下文章

CakePHP- 保存相关模型数据

CakePHP - 在模型中查找没有 hasMany 关系的 hasMany 关联?

CakePHP 没有来自相关模型的数据

cakephp 用户 ID 和相关模型

CakePHP 如何在一个视图中显示来自三个相关模型的数据?

CakePHP 2.0 添加相关数据失败,缺少数据库表