CakePHP - 成功与$ hasOne,失败与$ hasMany [英] CakePHP - success with $hasOne, failure with $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屋!