为什么CI不将count语句转换为数组?

时间:2019-06-16 21:41:44

标签: php codeigniter count

我正在努力做到这一点,以便您可以查看网站上某些内容的行数,我将结果转换为数组,然后在视图中进行了遍历,但是将参数称为无效。

正如我所说,我尝试了通常的做法,将数据从模型传递到控制器,然后传递到视图。我尝试将$query->num_rows();count_all_results返回到控制器数组以供在视图中使用,两者均无效。

  

controller.php

  $this->load->model('Main');
  $data = array(
    'getapps' => $this->Main->countapps()
  );
  $this->load->view('header', $data);
  

view.php

<?php foreach($getapps as $apps) {
?>

<a href="http://localhost/Dir/index.php/Controller/Apps" class="a-m" id="a-m-id">apps <strong><?php echo $apps; ?></strong></a>

<?php }
?>
  

model.php

public function countapps() {

$this->db->where('usedby', $_SESSION['uid']);
$this->db->get_where('apps', 'appstatus', 'Used');
$stmt = $this->db->count_all_results();

  return $stmt;
}

我希望发生的是视图显示行数,而是告诉我foreach参数无效。

1 个答案:

答案 0 :(得分:2)

在CI中,$this->db->count_all_results()$this->db->get()代替数据库查询。因此,您不能同时使用$this->db->get_where()$this->db->count_all_results(),而应使用num_rows()

这样编写模型函数:

public function countapps() {

 $query=$this->db->where('usedby', $_SESSION['uid'])
                 ->get_where('apps', 'appstatus', 'Used');
  $stmt = $query->num_rows();

  return $stmt;
}

您可以将控制器的名称更改为较短的文字:

$data['getapps'] => $this->Main->countapps();

然后在您看来,您不需要使用foreach(),因为$ data ['getapps']不是数组而是数字。您可以像

一样在视图中输出它
echo $getapps;