2014-06-26 4 views
0

Есть ли ограничение на то, насколько глубоким будет выбор, который будет использоваться для отношений с многими из них? У меня такой дизайн:Предел того, насколько глубоко много-ко-многим пойдет с CakePHP

В обзоре стола есть много секций опроса. В разделах обзора разделов много вопросов. В Таблицах есть много возможных ответов.

Если я делаю это для таблицы обследования:

$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(

    ); 
} 
+0

Что делает ваш код при попытке '$ this-> Survey-> recursive = 3;' вместо 2? – Holt

+0

Я был под впечатлением, что значения только пошли на 2: http://book.cakephp.org/2.0/ru/models/model-attributes.html#recursive, но вы правы, изменив его на 3 раза. – jason

+0

Я не уверен, что именно поэтому я не опубликовал его как ответ (это сработало?). Я думаю, что книга CakePHP показывает только пример для конкретного случая. – Holt

ответ

0

Вы должны использовать $this->Survey->recursive = 3;.

Как я сказал в комментарии, пример в http://book.cakephp.org/2.0/en/models/model-attributes.html#recursive немного вводит в заблуждение, потому что он показывает только пример для конкретного случая. Фактически вы можете зайти так далеко, как вы хотите, извлекая данные.

 Смежные вопросы

  • Нет связанных вопросов^_^