Php 如何使用Codeigniter'将结果集转换为对象数组;有什么活动记录?

Php 如何使用Codeigniter'将结果集转换为对象数组;有什么活动记录?,php,mysql,codeigniter,activerecord,resultset,Php,Mysql,Codeigniter,Activerecord,Resultset,这是我的控制器: public function index() { $data['page_title'] = 'Home'; $data['new_grievances'] = $this->admin_home->get_members(); $data['num_row'] = count($data['new_grievances'] ); print_r($data['new_grievances']); print_r($data

这是我的控制器:

public function index()
{
    $data['page_title'] = 'Home';
    $data['new_grievances'] = $this->admin_home->get_members();
    $data['num_row'] = count($data['new_grievances'] );
    print_r($data['new_grievances']);
    print_r($data['num_row']);
    $this->load->view('admin/grievances_admin_home' , $data);
}
这是我的模型:

function get_members() {
    // $query = $this->db->get('enquiry');
    // return $query;
    $this->db->from('enquiry a');
    $this->db->join('enquiry_department b', 'a.department=b.id' , 'inner');
    $this->db->join('enquiry_user_type c', 'a.user_type=c.id' , 'inner');
    $this->db->WHERE('a.status IS NULL');
    $query = $this->db->get(); 
    return $query;
}
我想得到行数和行数

在这里,我执行查询$data['new\u冤情]行数为0,因此$data['num\u row']的输出必须返回零

当我得到至少一行的结果时,我会打印它给出的$data['new_冤情]值:


如何获取结果集中的行?

请按照下面的行操作

public function index()
{
    $data['page_title'] = 'Home';
    $new_grievances = $this->admin_home->get_members();
    $data['num_row'] = $new_grievances->num_rows();
    print_r($new_grievances->result());
    $data['new_grievances'] = $new_grievances->result()
    print_r($data['num_row']);
    $this->load->view('admin/grievances_admin_home' , $data);
}

请按照下面的行

public function index()
{
    $data['page_title'] = 'Home';
    $new_grievances = $this->admin_home->get_members();
    $data['num_row'] = $new_grievances->num_rows();
    print_r($new_grievances->result());
    $data['new_grievances'] = $new_grievances->result()
    print_r($data['num_row']);
    $this->load->view('admin/grievances_admin_home' , $data);
}

return$query更改代码
to
return$query->result()
通过此操作,您还可以在视图中使用
$data
,并计算控制器中的总结果

这是控制器

public function index()
{
    $data['page_title'] = 'Home';
    $data['new_grievances'] = $this->admin_home->get_members();
    $data['num_row'] = count($data['new_grievances'] );
    print_r($data['new_grievances']);
    print_r($data['num_row']);
    $this->load->view('admin/grievances_admin_home' , $data);
}
这是我的模型

function get_members() {
    $this->db->from('enquiry a');
    $this->db->join('enquiry_department b', 'a.department=b.id' , 'inner');
    $this->db->join('enquiry_user_type c', 'a.user_type=c.id' , 'inner');
    $this->db->WHERE('a.status IS NULL');
    $query = $this->db->get(); 
    return $query->result();
}

return$query更改代码
to
return$query->result()
通过此操作,您还可以在视图中使用
$data
,并计算控制器中的总结果

这是控制器

public function index()
{
    $data['page_title'] = 'Home';
    $data['new_grievances'] = $this->admin_home->get_members();
    $data['num_row'] = count($data['new_grievances'] );
    print_r($data['new_grievances']);
    print_r($data['num_row']);
    $this->load->view('admin/grievances_admin_home' , $data);
}
这是我的模型

function get_members() {
    $this->db->from('enquiry a');
    $this->db->join('enquiry_department b', 'a.department=b.id' , 'inner');
    $this->db->join('enquiry_user_type c', 'a.user_type=c.id' , 'inner');
    $this->db->WHERE('a.status IS NULL');
    $query = $this->db->get(); 
    return $query->result();
}

只需使用下面的行即可从DB获得结果

$query=$this->db->get(); $results=$query->result()

并使用下面的代码获取找到的行数
$count=$query->num_rows()

只需使用下面的行即可从DB获取结果

$query=$this->db->get(); $results=$query->result()

并使用下面的代码获取找到的行数 $count=$query->num_rows()

模型

模型

正如我在中所说的,只要您只在MVC结构的一个层中使用行计数,那么声明一个计数变量并没有什么实际好处

  • 如果只打算在视图中使用该值,则只需在视图中调用
    count()
  • 如果只打算在控制器中使用该值,则只需在控制器中调用
    count()
  • 如果需要控制器和视图中的行数,则写入D.R.Y.代码并将行数缓存为控制器中的变量,然后将其传递给视图
最后,我建议您不要用O(1)函数调用可以立即访问的数据来扩充变量范围。

正如我在中所说的,只要您只在MVC结构的一个层中使用行计数,那么声明计数变量就没有真正的好处

  • 如果只打算在视图中使用该值,则只需在视图中调用
    count()
  • 如果只打算在控制器中使用该值,则只需在控制器中调用
    count()
  • 如果需要控制器和视图中的行数,则写入D.R.Y.代码并将行数缓存为控制器中的变量,然后将其传递给视图

最后,我建议您不要用O(1)函数调用可以立即访问的数据来填充变量范围。

如果数据库中没有行,那么您将得到错误消息:count():参数必须是实现Countable@user9437856那么你做了一些不同/不正确的事情。Codeigniter的
result()
方法无条件返回数组。如果结果集中没有行,则返回空数组。如果结果集中有行,则它将返回一个对象数组。如果数据库中没有行,则会收到错误消息:count():参数必须是数组或实现Countable@user9437856那么你做了一些不同/不正确的事情。Codeigniter的
result()
方法无条件返回数组。如果结果集中没有行,则返回空数组。如果结果集中有行,然后它将返回一个对象数组。OP明确说明:
我想获得行数和行数。
这意味着你无法解释的答案没有提供所需的数据,因此不正确,应该删除。OP明确说明:
我想获得行数和行数行。
这意味着您无法解释的答案没有提供所需的数据,因此不正确,应该删除。此答案缺少教育性解释。此答案缺少教育性解释。