【发布时间】:2014-06-26 12:38:20
【问题描述】:
对于多对五关系的全选深度是否有限制?我有这样的设计:
表格调查有许多表格调查部分。表调查部分有很多问题。表格问题有许多表格可能的响应。
如果我为调查表执行此操作:
$this->loadModel('Survey');
$this->Survey->recursive = 2;
$getSurvey = $this->Survey->find('all');
它只会到达问题表,但会返回可能的响应表。但是,如果我查询“Survey Sections”表,它会将所有内容都带回来。这是我的代码的问题还是搜索深度的限制?
这是我的模型:
<?php
App::uses('AppModel', 'Model');
class Survey extends AppModel {
public $validate = array(
);
public $belongsTo = array(
);
public $hasMany = array(
'surveySection' => array(
'className' => 'SurveySection',
'foreignKey' => 'surveys_id',
),
);
}
<?php
App::uses('AppModel', 'Model');
class SurveySection extends AppModel {
public $validate = array(
);
public $belongsTo = array(
);
public $hasMany = array(
'Question' => array(
'className' => 'Question',
'foreignKey' => 'survey_section_id',
),
);
}
<?php
App::uses('AppModel', 'Model');
class Question extends AppModel {
public $validate = array(
);
public $belongsTo = array(
);
public $hasMany = array(
'PossibleResponse' => array(
'className' => 'PossibleResponse',
'foreignKey' => 'questions_id',
),
);
}
<?php
App::uses('AppModel', 'Model');
class PossibleResponse extends AppModel {
public $validate = array(
);
public $belongsTo = array(
);
}
【问题讨论】:
-
当你尝试
$this->Survey->recursive = 3;而不是2时你的代码会做什么? -
我的印象是值只达到了 2:book.cakephp.org/2.0/en/models/model-attributes.html#recursive 但你是对的,将其更改为 3 有效。
-
我不太确定自己这就是为什么我没有将其发布为答案(它有效吗?)。我认为 CakePHP 书只展示了一个特定案例的示例。
-
是的,它奏效了。将其发布为回复,我会批准它。谢谢!
标签: cakephp cakephp-2.1 cakephp-2.3 cakephp-model