当我像在下面的函数中那样在更大的查询上创建一个条件时,我不能再引用组合的“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;
}
答案 0 :(得分:0)
答案似乎是因为我正在创建' category_condition' useMscdbCategoryStoryLinkQuery()块中的条件然后无法找到条件,因为当我尝试组合' category_condition'时,我不在该使用块内。另一个条件。 我没有找到基于推进查询的解决方案,最后使用了一个自定义编写的SQL。
使用 - > _or()组合useXXXQuery()块是很容易的,如下文所示:http://propelorm.org/documentation/reference/model-criteria.html 但我需要更复杂的组合和组合组合。
答案 1 :(得分:0)
我知道这是一个老问题,但我正在为自己记录这个问题。当涉及到表格的条件时,->condition()
不如->addCond()
灵活。由于这个原因,我更倾向于避免->condition()
支持->addCond()
。