CakePHP的 - 成功与$ hasOne,以$的hasMany失败(CakePHP - succ

2019-09-21 15:18发布

早上好,

我无法用$的hasMany,即使$ hasOne工作正常。

我有两个型号,分配和AssignmentGroup。 分配可以有一个AssignmentGroup但AssignmentGroup可以有很多作业。 这里有关系:

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

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

以下是我正在运行的代码:

$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我得到预期的结果。

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

然而,当我使用$的hasMany,因为我需要,事情土崩瓦解。 查询没有联接。

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

任何人能解释这是怎么回事和/或提出一个解决办法? 谢谢您的帮助。

Answer 1:

这可能是次要的,但我始终相信,我使用className在模型定义。

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

为了安全起见,因为书上说:“每个模型的别名必须是唯一的应用广泛”它帮助我保持这些直线。

此外,尝试使用$hasMany ,但服用contain出来只是为了看看这可能是什么搞乱你。



Answer 2:

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

应该:

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


文章来源: CakePHP - success with $hasOne, failure with $hasMany