CakePHP-使用HABTM的多个过滤器
我有以下模型:属性和特征 他们有着良好的关系 我想构建一个查询,它可以获取任意数量的特征ID,并搜索具有特征x、特征Y和特征Z等的属性 目前,我只能使用OR来管理一个与上述相同的CakePHP-使用HABTM的多个过滤器,cakephp,filtering,has-and-belongs-to-many,Cakephp,Filtering,Has And Belongs To Many,我有以下模型:属性和特征 他们有着良好的关系 我想构建一个查询,它可以获取任意数量的特征ID,并搜索具有特征x、特征Y和特征Z等的属性 目前,我只能使用OR来管理一个与上述相同的 即使是一个指示原始SQL如何执行此操作的指针也会很有用,因为我可以将其转换为CakePHP查找。您可能希望在属性模型中创建以下方法: function getProperties($characteristicsIDs) { $ids = $this->characteristicsProperty-&g
即使是一个指示原始SQL如何执行此操作的指针也会很有用,因为我可以将其转换为CakePHP查找。您可能希望在属性模型中创建以下方法:
function getProperties($characteristicsIDs) {
$ids = $this->characteristicsProperty->find('list', array(
'fields' => array('property_id', 'property_id'),
'conditions' => array('characteristic_id' => $characteristicsIDs),
'group' => 'property_id having count(*) = '.count($characteristicsIDs),
));
$ids = array_keys($ids);
return $ids;
}
然后在控制器内部:
$ids = $this->Property->getProperties($propertiesIDs);
$this->Property->find('all', array(
'conditions' => array(
'Property.id' => $ids
)
));
@明智的是,你可以验证答案。