CakePHP - 成功与$ hasOne,失败与$ hasMany [英] CakePHP - success with $hasOne, failure with $hasMany

查看:154
本文介绍了CakePHP - 成功与$ hasOne,失败与$ hasMany的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

早上好,

我对$ hasMany有麻烦,即使$ hasOne工作正常。

I am having trouble with $hasMany, even though $hasOne works fine.

我有两个模型,Assignment和AssignmentGroup。分配可以有一个AssignmentGroup,但AssignmentGroup可以有多个Assignments。这里是关系:

I have two models, Assignment and AssignmentGroup. Assignment can have one AssignmentGroup but AssignmentGroup can have many Assignments. Here are the relationships:

class Assignment extends AppModel {
    public $belongsTo = array('AssignmentGroup');
}

class AssignmentGroup extends AppModel {
    public $hasMany = array(
        'Assignment' => array('foreignKey'=>'assignment_group_id),
    );
}

这是我正在运行的代码:

Here's the code I'm running:

$this->AssignmentGroup->Behaviors->load('Containable');
$params = array(
    'conditions' => array('AssignmentGroup.class_id' => $class_id),
    'contain' => array('Assignment'),
);
$result = $this->AssignmentGroup->find('all', $params);

当我使用$ hasOne而不是$ hasMany时,我得到预期的结果。

When I use $hasOne instead of $hasMany I get the expected result.

$result = array(
    'AssignmentGroup => array(
        [several elements]
    ),
    'Assignment' => array(
        [more elements]
    ),
);

但是,当我使用$ hasMany时,该查询没有JOIN。

However, when I use $hasMany, as I need to, things fall apart. The query does not have a JOIN.

$result = array(
    'AssignmentGroup => array(
        [several elements]
    ),
    'Assignment' => array(),
);

任何人都可以解释发生了什么和/或建议解决方案?感谢您的帮助。

Can anyone explain what's going on and/or suggest a solution? Thanks for the help.

推荐答案

这可能是小的,但我总是确保我使用 className

This might be minor, but I always make sure that I use className in the Model definition.

var $hasMany = array(
    'Assignment' => array(
        'className' => 'Assignment',
        'foreignKey' => 'assignment_group_id',
    ),
);

只是为了安全,因为这本书说每个模型的别名必须是唯一的应用程序宽

Just to be safe since the book does say "aliases for each model must be unique app wide" it helps me keep those straight.

此外,尝试使用 $ hasMany ,但使用包含只是为了看看是否可能是什么东西搞乱了。

Also, try using the $hasMany but taking the contain out just to see if that could be what's messing you up.

这篇关于CakePHP - 成功与$ hasOne,失败与$ hasMany的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆