Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CakePHP-使用HABTM的多个过滤器_Cakephp_Filtering_Has And Belongs To Many - Fatal编程技术网

CakePHP-使用HABTM的多个过滤器

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

我有以下模型:属性和特征

他们有着良好的关系

我想构建一个查询,它可以获取任意数量的特征ID,并搜索具有特征x、特征Y和特征Z等的属性

目前,我只能使用OR来管理一个与上述相同的


即使是一个指示原始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
    )
));

@明智的是,你可以验证答案。