Cakephp递归查找再次包含顶级模型

Cakephp递归查找再次包含顶级模型,cakephp,recursion,model,include,find,Cakephp,Recursion,Model,Include,Find,我有一个cakephp查找查询: $results = $this->Instrument->find('all', array('recursive' => 2, 'conditions' => array('OR' => array('Instrument.name' => $tag_search, 'Instrument.nameEN' => $tag_search)))); 该型号仪表具有多个仪表箱,属于多个仪表箱。我想用$tag\u sear

我有一个cakephp查找查询:

$results = $this->Instrument->find('all', array('recursive' => 2, 'conditions' => array('OR' => array('Instrument.name' => $tag_search, 'Instrument.nameEN' => $tag_search))));
该型号仪表具有多个仪表箱,属于多个仪表箱。我想用
$tag\u search
查找包含所有仪器的仪器盒,搜索一个仪器名称。 它返回正确安装该仪器的InstrumentBox,但不包括仪器中的所有仪器。有没有办法告诉cakephp再次加载“顶级模型”以便获得结构

$results = array(
   0 => [
     'Instrument' => [
        'name' => "$tag_search value",
        '...' => ...,
        'Instrumentbox' => [
           0 => [
             '...' => '...', //everything else is properly included
             'Instrument' => [...] //this is NOT included, how can I include it?
           ]
        ]
     ]
   ]
当我用标签搜索它时也会发生同样的事情,所以想象一下在上面的结构中“Tag”而不是“Instrument”,然后仪器包含在Instrumentbox中,但标签没有。因此,“顶级模型”不再包含在结构中。我必须手工制作还是可以让cakephp制作?
提前谢谢

您可以尝试使用Contain来执行此操作。无论如何,它比使用递归1要好得多。您可以精确地控制想要得到的结果,这对这类事情有好处,而且通常对性能也有好处

因此,未经测试的代码:

//model
public $actsAs = array('Containable');
// controller
$this->Instrument->recursive=1;
$this->contain(array('Instrument'=> array('InstrumentBox'=> array('Instrument'))));