Yii查询构建器,如查询

时间:2014-06-06 17:00:01

标签: yii

我在yii查询构建器

中有以下查询

SQL查询

select cartoon.cdate, cartoon.name 
from cartoon_tag, cartoon
where
     cartoon_tag.tags like '%$tag%'
     and cartoon_tag.c_id=cid

Yii查询生成器

$raw = Yii::app()->db->createCommand()
            ->select('cartoon.cdate,cartoon.name')
            ->from('cartoon,cartoon_tag')
            ->where('cartoon_tag.tags like :tag AND cartoon_tag.c_id=cid', array(':tag'=>$tag))
            ->queryAll();

Sql查询提供了正确的结果,但是yii查询构建器无法正常工作,并且在$tag变量上提供完全匹配,而不是像查询一样工作。知道我哪里错了吗?

2 个答案:

答案 0 :(得分:1)

我认为它应该像是

->where('cartoon_tag.tags like :tag AND cartoon_tag.c_id=cid', array(':tag'=>'%TOM%'))

给予

 $raw = Yii::app()->db->createCommand()
->select('cartoon.cdate,cartoon.name')
->from('cartoon,cartoon_tag')
->where('cartoon_tag.tags like :tag AND cartoon_tag.c_id=cid', array(':tag'=>'%$tag%'))
->queryAll();

答案 1 :(得分:0)

我得到了解决方案。

$tag=strtr($tag, array('%'=>'\%', '_'=>'\_'));
$raw = Yii::app()->db->createCommand()
->select('c.cdate,c.name')
->from('cartoon c')
->join('cartoon_tag ct','ct.c_id=c.cid')
->where(array('like', 'ct.tags', '%'.$tag.'%'))
->queryAll();

现在这个有用了。