cakephp数组结果[达到最大深度]

时间:2014-11-21 11:47:27

标签: cakephp

我有两种型号。由 HABTM 加入的教师主题两种方式都已定义。教师可以教授很多科目,而且很多老师都可以教授科目。我加入表格科目_老师,并且字段 id,teacher_id和subject_id。

从模型中获取教师数据,我希望所有教师及其各自的科目, 从模型中获取主题数据我希望也能看到教授该特定主题的教师

问题  在两个实例上,关联模型返回正确数量的记录但数据不存在。当我显示相应的数组时,我看到 [达到最大深度]

加入表中移除了ID字段仅修复了教师模型。主题模型仍有问题。< / p>

我只需知道[达到的最大深度]意味着什么,为什么从联接表中删除id字段会修复教师问题而不是主题

如果重要的是我应该提到我的教师模型主键字段不遵循惯例 SUBJECT模型

public $hasAndBelongsToMany = array(
    'Teacher' => array(
    'className' => 'Teacher',
    'joinTable' => 'subjects_teachers',
    'foreignKey' => 'subject_id',
    'associationForeignKey' => 'teacher_id',
    'unique' => 'keepExisting'
    )
);

教师模型

public $hasAndBelongsToMany = array(
    'Subject' => array(
    'className' => 'Subject',
    'joinTable' => 'subjects_teachers',
    'foreignKey' => 'teacher_id',
    'associationForeignKey' => 'subject_id',
    'unique' => 'keepExisting'
    )
);

主题的结果

array(
(int) 0 => array(
    'Subject' => array(
        'id' => '1',
        'subject_code' => '121',
        'subject_name' => 'Mathematics',
        'compulsory' => true
    ),
    'Teacher' => array(
        (int) 0 => array(
            [maximum depth reached]
        ),
        (int) 1 => array(
            [maximum depth reached]
        ),
        (int) 2 => array(
            [maximum depth reached]
        )
    )
),

在删除ID字段之前来自教师的结果

array(
'Teacher' => array(
    'teacher_id' => '6',
    'first_name' => 'George',
   ),
  'Subject' => array(
    (int) 0 => array(
        'id' => '1',
        'subject_code' => '121',
        'subject_name' => 'Mathematics',
        'compulsory' => true,
        'SubjectsTeacher' => array(
            [maximum depth reached]
        )
    )

删除ID字段后的结果

'Subject' => array(
    (int) 0 => array(
        'id' => '1',
        'subject_code' => '121',
        'subject_name' => 'Mathematics',
        'compulsory' => true
    ),

2 个答案:

答案 0 :(得分:3)

您的数据存在,调试器不会显示它,因为depth选项限制它。使用debug()(默认深度= 25)或Debugger::dump()/exportVar(),深度(第二个参数,默认为3)足够深,可用于深层嵌套数据。

另见

答案 1 :(得分:0)