我在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
变量上提供完全匹配,而不是像查询一样工作。知道我哪里错了吗?
答案 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();
现在这个有用了。