【问题标题】:Getting number of reviews from table从表中获取评论数量
【发布时间】:2014-02-17 03:38:51
【问题描述】:

我正在尝试从表(评论)中获取评论数量。这是我的数据库结构和我正在使用的一些代码:

审核表

------------------------
| id | bizid | content |
------------------------

商务表

----------------
| id | bizname |
----------------

代码

Class Reviews extends MY_model {
    public function get_biz_id() {
        $query = $this->db->query("select * from biz");
        $id =$query->result();
        return $id;
    }
    
            public function get_count_reviews($c) {
                    $this->db->select('COUNT(review.id) AS reviewCount');
                    $this->db->join('review', 'review.bizid = biz.id');
                    $this->db->where('bizid', $c);
                    $query = $this->db->get('biz');
                    if ($query->num_rows() < 1) return FALSE;
                    $res = $query->row_array();
                    return $res['reviewCount'];
           }
}

本地控制器

Class Local extends CI_controller {

    public function city() {
        $this->load->model('reviews');                 
        $b = $this->reviews->get_biz_id();
        foreach($b as $bb) {
            $bbb = $bb->id;
            $data['count_reviews'] = $this->reviews->get_count_reviews($bbb);
            $this->load->view('local/index',$data);
        }
        $data['reviews'] = $this->reviews->get_city_reviews($city->id,5,1);
    }

}
    

这是视图:

<?php
foreach($reviews as $review):               
$biz = getBizById($review->bizid);
?>
<li class="clearfix">
    <div class="span-1">
        <a href="<?=site_url('member/'.$review->username)?>">
            <img class="thumbimg thumb40" src="<?=site_url(avatar($review->uid))?>"/>
        </a>
    </div>
            
    <div class="span-13">
        <div class="title-name">
            <a  href="<?=site_url('member/'.$review->username)?>"><?php echo ucfirst($review->username)?></a> reviewed
            <a href="<?=site_url('biz/'.$biz->id)?>#review_<?php echo $review->id ?>"><?=$biz->name?></a>
        </div>
        
        <div class="span-3 rating-wrap rating-<?php echo $review->rating ?>"></div>
        <div><?php echo $count_reviews;  ?></div>
                
        <p class="clear"><?=wordwrap($review->content,55,"<br>\n")?></p>
            
    </div>

</li> 
<?php endforeach;?>

我想在&lt;div class ="span-3"&gt; 旁边回显评论数量($count_reviews),但由于我还需要回显其他内容,所以我必须使用foreach(),这就是我的问题开始的地方。

输出

MC 唐纳德的 评论数 (1)

杰米·约翰斯 评论数 (1)

肯德基 评论数 (1)

甚至认为只有 MC Donald 有一条评论

谢谢

【问题讨论】:

  • 我认为你应该把 class Local 的内容放在一个函数中。
  • @Vainglory07 是啊,我打字的时候忘记了

标签: php codeigniter


【解决方案1】:

使用 JOIN 获取评论数:

public function get_count_reviews($c) {
        $this->db->select('COUNT(review.id) AS reviewCount');
        $this->db->join('review', 'review.bizid = biz.id');
        $this->db->where('bizid', $c);
        $query = $this->db->get('biz');
        if ($query->num_rows() < 1) return FALSE;
        $res = $query->row_array();
        return $res['reviewCount'];
    }

还可以在控制器中更改城市功能,如下所示

foreach($b as $bb) {
            $bbb = $bb->id;
            $data['count_reviews'][$bb->id] = $this->reviews->get_count_reviews($bbb);//save all instead of overwriting
            $this->load->view('local/index',$data);
}

在你的view

<div><?php echo (isset($count_reviews[$biz->id]))?$count_reviews[$biz->id]:0;  ?></div>

【讨论】:

  • 我也试过了,抱歉我没有提到。我一直在排队
  • 行是什么意思?请把输出
  • 您只会获得任何一项业务的评论计数,其中 bizid = 您传递的 id
  • 就像我上面说的,jimmy johns 有 3 个,KFC 有 5 个,MC donald's 有 1 个。到目前为止它只返回第一行
猜你喜欢
  • 2014-03-23
  • 2013-04-29
  • 2012-07-22
  • 1970-01-01
  • 2013-04-18
  • 1970-01-01
  • 2013-12-12
  • 2017-04-11
  • 1970-01-01
相关资源
最近更新 更多