/** * 问题列表 */ public function listAction() { $this->setLeftNav('list'); $req = $this->request; $page = intval($req->getQuery('page', null, 1)); $page = $page > 0 ? $page : 1; $limit = $this->pageNavLimit; $offset = $limit * ($page - 1); $filterTag = intval($req->getQuery('filterTag', null, -10000)); $filterOrder = intval($req->getQuery('filterOrder', null, 0)); $columns = ['Apps\\Common\\Models\\Question.question_id', 'ub.user_id', 'ub.user_nickname', 'ub.user_cover', 'Apps\\Common\\Models\\Question.question_tag', 'Apps\\Common\\Models\\Question.question_content', 'Apps\\Common\\Models\\Question.question_pics', 'Apps\\Common\\Models\\Question.answer_num', 'Apps\\Common\\Models\\Question.question_follows', 'Apps\\Common\\Models\\Question.question_browsers', 'Apps\\Common\\Models\\Question.question_state', 'Apps\\Common\\Models\\Question.question_addtime', 'Apps\\Common\\Models\\Question.city_code']; $where = []; $bind = []; if ($filterTag > 0) { $where[] = 'Apps\\Common\\Models\\Question.question_tag = :tag:'; $bind['tag'] = $filterTag; } // 只查询正常的内容 $where[] = 'Apps\\Common\\Models\\Question.question_state > 0'; $whereStr = implode(' AND ', $where); $query = Question::query()->columns($columns)->leftJoin('Apps\\Common\\Models\\UserBase', 'ub.user_id = Apps\\Common\\Models\\Question.user_id', 'ub'); if (count($where) > 0) { $query = $query->where($whereStr)->bind($bind); } $data = $query->orderBy($filterOrder == 1 ? 'answer_num ASC, Apps\\Common\\Models\\Question.question_id DESC' : 'Apps\\Common\\Models\\Question.question_id DESC')->limit($limit, $offset)->execute(); //总数 $total = Question::count(['conditions' => $whereStr, 'bind' => $bind]); $this->view->setVar('data', $data); $this->view->setVar('page', $page); $this->view->setVar('limit', $limit); $this->view->setVar('total', $total); // $this->view->setVar('tagList', QuestionTag::query()->columns('*')->orderBy('tag_order DESC, tag_id ASC')->execute()); $this->view->setVar('filterTag', $filterTag); $this->view->setVar('filterOrder', $filterOrder); }
/** * 问题列表 * @date: 2016年1月19日 * @author: futao */ public function listAction() { $this->setLeftNav('list'); $req = $this->request; $page = intval($req->getQuery('page', null, 1)); $page = $page > 0 ? $page : 1; $limit = $this->pageNavLimit; $offset = $limit * ($page - 1); $filterUser = intval($req->getQuery('filterUser', null, -10000)); $filterState = intval($req->getQuery('filterState', null, -10000)); $filtertime = $req->getQuery('inputtime', null, ''); $filtercontent = $req->getQuery('qcontent', null, ''); $filtertag = $req->getQuery('qtag', null, ''); $filtercity = $req->getQuery('cityCode', null, 0); $filterNew = $req->getQuery('new', null, -1); $columns = ['Apps\\Common\\Models\\Question.question_id', 'ub.user_id', 'ub.user_nickname', 'ub.user_cover', 'Apps\\Common\\Models\\Question.question_tag', 'Apps\\Common\\Models\\Question.question_content', 'Apps\\Common\\Models\\Question.question_pics', 'Apps\\Common\\Models\\Question.answer_num', 'Apps\\Common\\Models\\Question.question_follows', 'Apps\\Common\\Models\\Question.question_browsers', 'Apps\\Common\\Models\\Question.question_state', 'Apps\\Common\\Models\\Question.question_addtime', 'Apps\\Common\\Models\\Question.city_code']; $where = []; $bind = []; //筛选数据 if ($filtercity == -1) { $where[] = 'city_code <> 0 '; $this->setLeftNav('citylist'); } if ($filterNew > -1) { $where[] = 'Apps\\Common\\Models\\Question.is_manager_reply = :new:'; $bind['new'] = $filterNew; } if ($filtertag != '') { $questionIds = QuestionTag::query()->columns("question_id")->where('tag_name like "%' . $filtertag . '%"')->execute()->toArray(); if ($questionIds != '') { foreach ($questionIds as $val) { $ids[] = $val['question_id']; } $ids = implode(",", $ids); $where[] = 'Apps\\Common\\Models\\Question.question_id in (' . $ids . ')'; } } if ($filtertime != '') { if (explode("至", $filtertime)) { $timearr[] = explode("至", $filtertime); $start_time = $timearr[0][0]; $end_time = $timearr[0][1]; if ($start_time != '' && $end_time != '') { $where[] = 'Apps\\Common\\Models\\Question.question_addtime >= :start_time: and Apps\\Common\\Models\\Question.question_addtime <= :end_time:'; $bind['start_time'] = $start_time; $bind['end_time'] = $end_time; } } } if ($filtercontent != '') { $where[] = 'Apps\\Common\\Models\\Question.question_content like :content:'; $bind['content'] = '%' . $filtercontent . '%'; } if ($filterUser > 0) { $where[] = 'Apps\\Common\\Models\\Question.user_id = :uid:'; $bind['uid'] = $filterUser; } if ($filterState > -10000) { $where[] = 'Apps\\Common\\Models\\Question.question_state = :state:'; $bind['state'] = $filterState; } $whereStr = implode(' AND ', $where); $query = Question::query()->columns($columns)->leftJoin('Apps\\Common\\Models\\UserBase', 'ub.user_id = Apps\\Common\\Models\\Question.user_id', 'ub'); if (count($where) > 0) { $query = $query->where($whereStr)->bind($bind); } $data = $query->orderBy('Apps\\Common\\Models\\Question.question_id DESC')->limit($limit, $offset)->execute()->toArray(); $total = Question::count(['conditions' => $whereStr, 'bind' => $bind]); foreach ($data as $k => $v) { //问题内容解码 if (unserialize(base64_decode($v['question_content']))) { $data[$k]['question_content'] = unserialize(base64_decode($v['question_content'])); } if (json_decode($data[$k]['question_tag'])) { $data[$k]['question_tag'] = json_decode($data[$k]['question_tag']); } } $this->view->setVar('data', $data); $this->view->setVar('page', $page); $this->view->setVar('limit', $limit); $this->view->setVar('total', $total); $this->view->setVar('openCity', $this->openCityList()); $this->view->setVar('filterNew', $filterNew); $this->view->setVar('cityCode', $filtercity); $this->view->setVar('inputtime', $filtertime); $this->view->setVar('filterUser', $filterUser); $this->view->setVar('filtertag', $filtertag); $this->view->setVar('filterState', $filterState); $this->view->setVar('qcontent', $filtercontent); }
public function listAction() { $this->setLeftNav('list'); $req = $this->request; $page = intval($req->getQuery('page', null, 1)); $page = $page > 0 ? $page : 1; $limit = $this->pageNavLimit; $offset = $limit * ($page - 1); $filterUser = intval($req->getQuery('filterUser', null, -10000)); $filterTag = intval($req->getQuery('filterTag', null, -10000)); $filterState = intval($req->getQuery('filterState', null, -10000)); $columns = ['question_id', 'ub.user_id', 'user_nickname', 'user_cover', 'question_tag', 'tag_title', 'question_content', 'question_pics', 'answer_num', 'question_follows', 'question_browsers', 'question_state', 'question_addtime']; $where = []; $bind = []; if ($filterUser > 0) { $where[] = 'Apps\\Common\\Models\\Question.user_id = :uid:'; $bind['uid'] = $filterUser; } if ($filterTag > 0) { $where[] = 'Apps\\Common\\Models\\Question.question_tag = :tag:'; $bind['tag'] = $filterTag; } if ($filterState > -10000) { $where[] = 'Apps\\Common\\Models\\Question.question_state = :state:'; $bind['state'] = $filterState; } $whereStr = implode(' AND ', $where); $query = Question::query()->columns($columns)->leftJoin('Apps\\Common\\Models\\UserBase', 'ub.user_id = Apps\\Common\\Models\\Question.user_id', 'ub')->leftJoin('Apps\\Common\\Models\\QuestionTag', 'tag.tag_id = question_tag', 'tag'); if (count($where) > 0) { $query = $query->where($whereStr)->bind($bind); } $data = $query->orderBy('question_id DESC')->limit($limit, $offset)->execute()->toArray(); $total = Question::count(['conditions' => $whereStr, 'bind' => $bind]); foreach ($data as $k => $v) { if (unserialize(base64_decode($v['question_content']))) { $data[$k]['question_content'] = unserialize(base64_decode($v['question_content'])); } } $this->view->setVar('data', $data); $this->view->setVar('page', $page); $this->view->setVar('limit', $limit); $this->view->setVar('total', $total); $this->view->setVar('tagList', QuestionTag::query()->columns('*')->orderBy('tag_order DESC, tag_id ASC')->execute()); $this->view->setVar('filterUser', $filterUser); $this->view->setVar('filterTag', $filterTag); $this->view->setVar('filterState', $filterState); }