1

我有以下情况。我有一个模型引用名为questions. questions 表包含一个名为 的关键引用parent_id,因此问题可以有父级。这个父级是同一个表中的一个问题记录。这是因为有些问题实际上是最终用户需要一起查看的一堆问题。

我试图在我的数据库中对这种行为进行建模,如下所示:

 public $hasMany = array(
    'AttemptedQuestions' => array( 'classname' =>   'AttemptedQuestions' ),
    'Questions' => array('className'=>'Questions', 'foreignKey'=>'parent_id')
);

编辑:所以奇怪的是,在问题控制器中,我可以很好地引用我的数据,如下所示:

$test_question = $this->Question->find('all', array('conditions' => array('id' => 25)));

这将完全符合我的要求。我返回了一个包含问题及其子项的数据数组。访问具有父问题的问题的问题$test_question['Questions']。我不明白的是,如果我在另一个控制器中引用这个模型,它不会返回子数组。只返回问题部分。从模型返回的数据如何取决于您所在的控制器?这种行为似乎很奇怪,我也想知道如何从数据库中获取孩子。感谢您的时间。$test_question['Children']parent_idTests

4

1 回答 1

2

'classname' 键必须与模型类名匹配,它不是任意的。所以:

class Question extends AppModel {
    public $hasMany = array(
       'ChildQuestion' => array('className'=>'Question', 'foreignKey'=>'parent_id')
    );
}

$hasMany 数组键(即“ChildQuestion”)可以是任意的;这将出现在结果中。


奖励:如果您需要获取子问题的父母,请添加:

    public $belongsTo= array(
       'ParentQuestion' => array('className'=>'Question', 'foreignKey'=>'parent_id')
    );
于 2013-05-09T02:12:15.413 回答