flyingoneshjs 2012-06-04 17:26:34 4783次浏览 13条回复 0 0 0

在yii中我用了compare来完成一个搜索的功能,例如要搜索标题就是$criteria->compare('t.name',$input,true,'OR'); 但是但我搜索标题为“中国 北京”时(就是搜索两项内容),是不可以的,只能搜索“中国”或者是“北京”,这该怎么做呢?多谢啦。。。

  • 回复于 2012-06-04 17:28 举报

    是不是要把字符串拆分才行呢

  • 回复于 2012-06-04 20:21 举报

    $criteria->compare('t.name',$input,true,'IN');
    然后用“中国,北京”试试看

  • 回复于 2012-06-05 09:40 举报

    放在数组中

  • 回复于 2012-06-05 10:03 举报

    我这样写了 $input=array("中国","北京"); 这只是一个例子,先用这两个词语代替
    $criteria->compare('t.name',$input,true,'IN'); 还是不行嘛,写错了吗

  • 回复于 2012-06-05 10:29 举报

    这样写应该没错。你现在搜索到的内容是什么?

  • 回复于 2012-06-05 10:37 举报

    我做的是一个新闻展示的网站,在文本框中不填写内容直接搜索是把所有的内容都显示出来(这好像是对的),但是这样写后点击搜索也把所有的新闻标题都显示出来了,但是我只想要符合条件的

  • 回复于 2012-06-05 11:42 举报

    你应该先通过表单获取到用户输入的搜索内容,遇到空格要分隔开,然后自己写查询语句,要使用模糊查询,查询到新闻Id不就是一数组么,然后compare就行了

  • 回复于 2012-06-05 15:06 举报

    同意楼上。
    例如:

    $input = array('北京','中国');
    $criteria->compare('t.name',$input,true,'OR');
    
  • 回复于 2012-06-05 15:33 举报

    嗯, 我现在就是先假设出一个数组了$input = array('北京','中国'); 可是点击搜索,然后提交显示出来的是空把or改成in就显示出来的是全部的,这是什么情况呢,不能按照要求显示

  • 回复于 2012-06-06 06:44 举报

    最后应该就加一个 IN('北京', '中国')这样的条件。你直接在phpmyadmin里面测试一下是不是一样。

  • 回复于 2012-06-06 13:03 举报

    学习了:)

  • 回复于 2012-06-06 13:08 举报

    没用compare,直接$criteria->condition="sql语句” 就行了 compare中使用数组不知道为什么没反应

  • 回复于 2012-06-06 13:21 举报

    这样更直接方便。。。

您需要登录后才可以回复。登录 | 立即注册