yii many_many数据库标准过滤器太具体

yii many_many数据库标准过滤器太具体,yii,many-to-many,Yii,Many To Many,我的任务模型中有很多关系 'keywordlist' => array(self::MANY_MANY, 'Keyword', 'task_keyword(id_task, id_keyword)'), 好吧,我会把所有这些任务都列在我的清单上 $criteria = new CDbCriteria(); $criteria->condition = "t.blocked = 0 AND t.answered = 0 AND t.date_deadline > NO

我的任务模型中有很多关系

 'keywordlist' => array(self::MANY_MANY, 'Keyword', 'task_keyword(id_task, id_keyword)'),
好吧,我会把所有这些任务都列在我的清单上

$criteria = new CDbCriteria();
    $criteria->condition = "t.blocked = 0 AND t.answered = 0 AND t.date_deadline > NOW()";
    $criteria->order = 't.id desc';
$criteria->addCondition('keywordlist.name like \'%html%\'','AND');
好的,现在一个任务可以有一个或*个关键字。如果我在我的任务中使用过滤器

$criteria = new CDbCriteria();
    $criteria->condition = "t.blocked = 0 AND t.answered = 0 AND t.date_deadline > NOW()";
    $criteria->order = 't.id desc';
$criteria->addCondition('keywordlist.name like \'%html%\'','AND');
我收到了想要的任务,但只有html关键字。该任务还有更多不会出现的其他关键字。 如何从keywordlist.name列创建类似in_数组的内容。如果关键字在结果中,是否将所有关键字返回到我的任务

如果我使用例如%p%作为关键字搜索,如果关键字包含带有“p”的内容,则会显示更多关键字。但是其他关键词也不会出现。

如果我理解正确,这就是你要找的

$criteria->addInCondition('keywordlist.name',array('html','add','other','keywords','here'));

我以前尝试过附加条件,但结果相同。问题是,一个任务可能有许多关键字,而每个关键字都存储为任务\关键字关系中的一行。因此,如果我找到搜索到的关键字“html”,它不会将所有其他关键字返回给任务。我需要一个附加条件,但已切换。keywordlist.name应该是数组,第一个参数应该是搜索的keyword@GarryCat我不明白你的要求。如果您想要搜索任务以外的所有关键字,只需添加另一个关系
'allkeywordlist'=>数组(self::MANY_MANY,'Keyword','task_Keyword(id_task,id_Keyword)
,并在搜索$task=new task()后使用
allkeywordlist
$标准=新的CDB标准()$条件->条件=“t.blocked=0和t.answered=0和t.date\u deadline>NOW()”$标准->顺序='t.id desc'$标准->带='keywordlist'$标准->一起=真$条件->添加条件('keywordlist.name',数组('html')$tasks=Task::model()->with('keywordlist')->findAll($criteria);这就是我如何获得我的任务和关键字。我已经有了你的关系,但它叫做关键词列表。您是说,在查询之后,只使用结果中的任务ID进行新查询?这不是多余的吗?如果这有帮助的话,你:如果搜索的关键字只匹配一个任务关键字,我想要一个任务及其关键字的列表。任务1(关键字:html、css、java)任务2(关键字:html、javascript、ajax)任务3(关键字:java、打字)如果我搜索“html”,结果必须是任务1+2及其所有关键字。但是我现在的结果只有关键字“html”,其他的都没有了。因为其他关键字中没有“html”。但是其中一个匹配,所以我想要所有的。