onethink搜索功能完善教程,搜索匹配标题和内容或者加上描述同时检索。

if(I('get.kw')){
    $kw = trim(I('get.kw'));
    $map['title'] = array('like',"%{$kw}%");
    $like_id = $this->logic(2)->where("content like '%{$kw}%'")->getField('id', true);
    if($like_id)
    $map['id'] = array('in', $like_id);
}

上面if条件主要判断当前检索的关键词是否存在,加入搜索查询条件。

下面的函数是onethink文档模型中的设置where查询条件函数。

/**
* 设置where查询条件
* @param  number  $category 分类ID
* @param  number  $pos      推荐位
* @param  integer $status   状态
* @return array             查询条件
*/
private function listMap($category, $status = 1, $pos = null){
    /* 设置状态 */
    $map = array('status' => $status, 'pid' => 0);

    /* 设置分类 */
    if(!is_null($category)){
        if(is_numeric($category)){
              $map['category_id'] = $category;
        } else {
                $map['category_id'] = array('in', str2arr($category));
        }
    }

    $map['create_time'] = array('lt', NOW_TIME);
    $map['_string']     = 'deadline = 0 OR deadline > ' . NOW_TIME;

    /* 设置推荐位 */
    if(is_numeric($pos)){
         $map[] = "position & {$pos} = {$pos}";
    }

     return $map;
}
点赞(1) 打赏

评论列表 共有 0 条评论

暂无评论

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部