我有模型:项目=>关键字CakePHP根据数组筛选相关模型
使用HMBTM关系(在两个模型中设置)。
关键字表充当一个树,即。这些关键字之间具有层次关系。
我正在使用可容忍的行为。
用户选择关键字。
我希望返回的记录(项目)受所选关键字或任何关键字的子项限制。我试图重用我的索引操作..如果没有选择关键字,则渲染标准索引视图,如果选择关键字,则查找所有子关键字,然后将返回的项目过滤为具有任何关键字标识的项目。
我曾尝试创建一个儿童(和原始)关键字ID的数组,但我无法弄清楚如何让该数组成为我的查找动作中的过滤。
我已经尝试使用:
$this->Project->find('all',
array(
'contain' => array('Keyword.id'=>array($childkeywords))
)
);
其中$ childkeywords是相关ID的排列,创建使用array_push。但是,这不使用键值对,只是每个ID的int值。所以我认为它的结构不正确。
我觉得我想要做一些很容易的事情,但是感觉我越来越远离解决方案。是否没有一种标准的方法将记录限制为相关模型的ID集合?
干杯
与圣保罗的帮助,我现在有:
$this->Project->find('all', array(
'fields' => array('id','title','country', 'project_ref'),
'type' => array('inner'),
'contain' => array('Keyword' => array(
'conditions' => array('Keyword.id' => $childkeywords)
)
)
)
)
但使用类型内的是不会改变的结果..
Paulo,感谢这真的帮助..我的代码现在停止崩溃,但是当我调试创建的数组时,它显示所有项目和匹配搜索ID的项目显示关联的关键字。我需要的是摆脱没有任何关联,匹配关键字的项目。 虽然这感觉真的很接近!这感觉就像一个左外和内连接问题 - 不知道如何解决这个问题。 –
我曾尝试将'type'=>数组('inner')添加到参数列表中,但这并没有改变。 –
是的,你可以添加''type'=>'inner'',但是应该在'Keyword'模型中添加'$ belongsTo'数组。你试过了吗? –