即使创建了Propel 1.6,也无法访问组合条件

时间:2014-06-25 22:31:20

标签: symfony-1.4 propel

当我像在下面的函数中那样在更大的查询上创建一个条件时,我不能再引用组合的“category_condition”。

有谁理解为什么? 这是因为我在USE区块内创建了条件吗?如果是这样,有办法解决这个问题吗?

我收到以下错误:

Cannot combine unknown condition 'category_condition'

当我尝试这样做时:

 $query->combine(array('domain_condition','category_condition'),'and','category_domain_condition');

创建条件之后:

$query = $this->createCategoryConditionMSC($query, $cats);


 protected function createCategoryConditionMSC($query, $cats)
    {
        //Use methods return query object not alter it so need to catch this and then reassign at end of method.
        $catQuery=$query->useMscdbCategoryStoryLinkQuery();

            $count=0;
            $condsArray=array();
            foreach($cats as $catId)
            {
                $count++;
                 $catQuery->condition('cat_cond_'.$count, 'MscdbCategoryStoryLink.CategoryId = ?', $catId);
                 $condsArray[]='cat_cond_'.$count;
            }


             if(count($condsArray)>0){
                 $catQuery->combine($condsArray,$this->getCategoryCombine(),'category_condition');
             }

        $query=$catQuery->endUse();

    return $query;


    }

2 个答案:

答案 0 :(得分:0)

答案似乎是因为我正在创建' category_condition' useMscdbCategoryStoryLinkQuery()块中的条件然后无法找到条件,因为当我尝试组合' category_condition'时,我不在该使用块内。另一个条件。 我没有找到基于推进查询的解决方案,最后使用了一个自定义编写的SQL。

使用 - > _or()组合useXXXQuery()块是很容易的,如下文所示:http://propelorm.org/documentation/reference/model-criteria.html 但我需要更复杂的组合和组合组合。

答案 1 :(得分:0)

我知道这是一个老问题,但我正在为自己记录这个问题。当涉及到表格的条件时,->condition()不如->addCond()灵活。由于这个原因,我更倾向于避免->condition()支持->addCond()

http://sandbox.propelorm.org/e78c98e