我的模特中有以下关系
BasicIndexing属于申请人
申请人有许多请求
因此我想检索BasicIndexing模型并包含申请人模型和申请人对应的请求,如下面的代码所示
$fullCondition = array(
'contain' => array(
'Applicant' => array(
'Request',
'fields'=>array('Applicant.surname','Applicant.first_name','Applicant.id')
)
),
'conditions' => $conditions,
'fields'=>array('BasicIndexing.application_date','BasicIndexing.application_number')
);
$this->loadModel('BasicIndexing');
$searchResult = $this->BasicIndexing->find('all',$fullCondition);
问题是返回$searchResult
的结果根本不包含Request模型。它仅包含Applicant模型并忽略Request模型。我尝试使用与申请人无关的模型,并且我得到模型未与申请人模型相关联的警告。
Array
(
[0] => Array
(
[BasicIndexing] => Array
(
[application_date] => 2012-04-17
[application_number] => BIA170420124356
)
[Applicant] => Array
(
[surname] => Kermit
[first_name] => Frog
[id] => 4f8d3b63-c2bc-48a1-9fb5-0290c982293d
)
)
)
是否有任何错误或蛋糕1.3.0发布存在问题?
任何帮助都将受到高度赞赏。
感谢。
答案 0 :(得分:0)
我认为是因为你的fields
数组。您需要将Request.*
添加到现有的fields
数组中,或者将fields
数组添加到Request
所以它应该看起来像下面两个例子之一:
$fullCondition = array(
'contain' => array(
'Applicant' => array(
'fields'=>array('Applicant.surname','Applicant.first_name','Applicant.id'),
'Request' => array(
'fields' => array('*')
)
)
),
'conditions' => $conditions,
'fields'=>array('BasicIndexing.application_date','BasicIndexing.application_number')
);
$fullCondition = array(
'contain' => array(
'Applicant' => array(
'fields'=>array('Applicant.surname','Applicant.first_name','Applicant.id', 'Request.*'),
'Request'
)
),
'conditions' => $conditions,
'fields'=>array('BasicIndexing.application_date','BasicIndexing.application_number')
);
答案 1 :(得分:0)
我遇到了同样的问题。基本上,包含是不稳定的,并且会返回相关联的“属于”的结果。关系,但不是“有很多人”的关系。我只需要一个级别的递归,结果证明' 1'对于递归声明(以及-1和0)是一个特殊的东西。因此,获取我想要的数据的唯一方法是使用笨重的递归'声明,但要将其设置为不必要的高度' 2'。
我知道这是一个古老的问题,但我只是花了一整天的时间来解决这个问题,我希望能够把它留给其他一些可怜的笨蛋,那个过时的蛋糕就在那里了......