>我有一个模型,我从数据库中选择正确的数据,如下所示:
<?php
class vacancies extends CI_Model{
function vacancies()
{
$query = $this->db->query("SELECT * FROM ecc_vacancies_vac WHERE active_vac = 1 AND end_vac >= CURDATE() ORDER BY date_vac DESC");
if($query->num_rows() >= 1){
foreach($query->result() as $row){
$data[] = $row;
}
return $data;
}
}
}
以及一个控制器,用于在发送到查看之前处理此数据,如下所示:
function index()
{
//check if there any available vacancies
$this->load->model('vacancies');
$data['vacancies'] = $this->vacancies->vacancies();
// then i load the views here
}
我需要做的是知道控制器中返回的行总数,以便我可以将数字发送到视图以供以后使用。
使用活动记录时,我曾经使用过以下代码行:
$data['num_rows'] = $$data['vacancies']->num_rows();
在我的情况下,我该如何定义它?
PHP来救援。由于模型方法返回一个数组,因此您可以通过简单的 count() 调用来获取总行数。
所以,例如,
$this->load->model('vacancies');
$data['vacancies'] = $this->vacancies->vacancies();
$data['number_of_vacancies'] = count($data['vacancies']);
num-rows(); 仅在您仍在处理模型中的"查询部分"时才有效。它引用数据库对象。您已经返回了数据。试试这个:
$data['num_rows'] = count($data['vacancies']);
你从模型中返回一个数组,所以在控制器中你可以使用 PHP 的 count() 函数:
$data['num_rows'] = count($data['vacancies']);
您的模型也存在问题,如果没有结果,该函数将不会返回数组,如果您稍后将其视为数组,可能会导致问题。您应该在 if 语句之前添加 $data 的初始化,然后始终返回一个空数组:
function vacancies()
{
$query = $this->db->query("SELECT * FROM ecc_vacancies_vac WHERE active_vac = 1 AND end_vac >= CURDATE() ORDER BY date_vac DESC");
$data = array();
if ($query->num_rows() >= 1){
foreach ($query->result() as $row){
$data[] = $row;
}
}
return $data;
}
为了帮助您:
if($query->num_rows()!==0){
return $query->result_array();
}else{
return 0;
}
返回 0 并在视图中创建 if else 语句
if($result!=0){
// No results found
}else{
// Do something
}