【问题标题】:Limit to how deep a Many-To-Many will go with CakePHP限制 CakePHP 的多对多深度
【发布时间】: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-&gt;Survey-&gt;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


【解决方案1】:

您应该使用$this-&gt;Survey-&gt;recursive = 3;

正如我在评论中所说,http://book.cakephp.org/2.0/en/models/model-attributes.html#recursive 的示例有点误导,因为它仅显示特定案例的示例。事实上,在获取数据时,您可以随心所欲地走多远。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-27
    • 2016-03-02
    • 1970-01-01
    • 2013-04-25
    • 1970-01-01
    • 2015-09-15
    • 1970-01-01
    • 2012-11-04
    相关资源
    最近更新 更多