1

我的模型中有以下关系

基本索引属于申请人

申请人有很多请求

因此,我想检索 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 模型。它只包含申请者模型并忽略请求模型。我尝试使用与申请人无关的模型,但我收到模型未与申请人模型关联的警告。

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 版本有问题?

任何帮助将不胜感激。

谢谢。

4

2 回答 2

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')
);
于 2012-04-20T09:53:17.400 回答
0

我只是有同样的问题。基本上,contain 是不稳定的,会返回关联的“belongsTo”关系的结果,而不是“hasMany”的结果。我只需要一个级别的递归,事实证明'1'对于递归声明来说是一个特殊的东西(以及-1和0)。因此,我获得所需数据的唯一方法是使用笨重的“递归”声明,但将其设置为不必要的高“2”。

我知道这是一个老问题,但我只是花了一整天的时间来解决这个问题,我希望把这个问题留给其他一些被那个过时版本的蛋糕卡住的可怜的笨蛋……

于 2017-06-09T16:08:21.853 回答