检索仅审核帖子的最后一个用户

时间:2014-02-20 22:34:56

标签: php codeigniter codeigniter-2 codeigniter-datamapper

我在这里要做的是查询最后一位用户查看过的商家。

这是商家表


id |用户名|商业名称| city_id ----------------------------------.......

这是评论表


id | bisid |用户名|内容 ----------------------------------......

代码工作正常,但最后我意识到有10个用户审核了一项业务,那么我的主页就是关于该业务的。

EX: 假设我的网站上有三个业务。 MC唐纳德,吉米约翰斯肯德基

我想显示上次审核该商家的用户。

我希望它像:

迈克回顾了MC唐纳德

史蒂夫评论吉米约翰斯

戴夫评论肯德基

而不是:

迈克回顾了MC唐纳德 Jaycee回顾了MC唐纳德 安娜回顾了MC唐纳德 约翰评论了MC唐纳德 何塞评论了MC唐纳德 史蒂夫回顾了吉米约翰斯 戴夫评论肯德基

 Class Local extends CI_controller {

   public function city() {

      $data['reviews'] = $this->reviews->get_city_reviews($city->id,10,0);

      $this->load->view('local/index',$data);

   }

 }

模型

 Class Reviews extends MY_model {

public function get_city_reviews($city_id,$limit,$offset)
{
    $list = array();
    $this->db->select('review.*');
    $this->db->from('review');
    $this->db->join('biz','biz.id = review.bizid');
    $this->db->where('biz.city_id',$city_id);
    $this->db->order_by('review.created_at','desc');
    $this->db->limit($limit,$offset);
    $query = $this->db->get();
    foreach($query->result() as $row)
    {
        $list[] = $row;
    }
    return $list;
}

  }

2 个答案:

答案 0 :(得分:1)

GROUP BY语句与聚合函数结合使用,可以按一列或多列对结果集进行分组。

public function get_city_reviews($city_id,$limit,$offset)
{
    $list = array();

    $this->db->from('review');
    $this->db->join('biz','biz.id = review.bizid');
    $this->db->where('biz.city_id',$city_id);
    $this->db->order_by('review.created_at','desc');
    $this->db->limit($limit,$offset);
            $this->db->group_by('bizid');
    $query = $this->db->get();
    foreach($query->result() as $row)
    {
        $list[] = $row;
    }
    return $list;
}

答案 1 :(得分:0)

在查询评论表时尝试选择DISTINCT bisid

编辑:这是一个例子http://www.w3schools.com/sql/sql_distinct.asp