Cakephp递归查找再次包含顶级模型
我有一个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
$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'))));