如何使用 Codeigniter 的活动记录将结果集转换为对象数组?
How to convert a result set to an array of objects with Codeigniter's Active Record?
这是我的控制器:
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_grievances'] 行数为 0,因此 $data[[=33 的输出=]] 必须 return 零。
当我得到至少一行的结果时,我会打印 $data['new_grievances'] 它给出的值:
CI_DB_mysqli_result Object (
[conn_id] => mysqli Object (
[affected_rows] => 0
[client_info] => mysqlnd 5.0.11-dev - 20120503 - $Id: 76b08b24596e12d4553bd41fc93cccd5bac2fe7a $
[client_version] => 50011
[connect_errno] => 0
[connect_error] =>
[errno] => 0
[error] =>
[error_list] => Array ( )
[field_count] => 12
[host_info]
...
如何获取结果集中的行?
请按以下行操作。
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;
更改为 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();
}
只需使用以下行即可从数据库中获取结果
$query = $this->db->get();
$results = $query->result();
并使用以下代码获取找到的行数
$count = $query->num_rows();
public function index()
{
$data['page_title'] = 'Home';
$data['new_grievances'] = $this->admin_home->get_members();
/*Old Code
$data['num_row'] = count($data['new_grievances'] );*/
//New Code
$data['num_row'] = $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');
return $this->db->count_all_results();
}
正如我在 中所说,只要您仅 使用 MVC 结构的一层中的行数,声明就没有真正的好处计数变量。
- 如果您只打算在您的视图中使用该值,则只在您的视图中调用
count()
。
- 如果您只打算在您的控制器中使用该值,则只需在您的控制器中调用
count()
。
- 如果您需要控制器和视图中的行数,则写D.R.Y。编码并将行计数缓存为控制器中的变量,然后将其传递给视图。
最后,我建议您不要使用可通过 O(1) 函数调用立即访问的数据来膨胀变量范围。
这是我的控制器:
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_grievances'] 行数为 0,因此 $data[[=33 的输出=]] 必须 return 零。
当我得到至少一行的结果时,我会打印 $data['new_grievances'] 它给出的值:
CI_DB_mysqli_result Object ( [conn_id] => mysqli Object ( [affected_rows] => 0 [client_info] => mysqlnd 5.0.11-dev - 20120503 - $Id: 76b08b24596e12d4553bd41fc93cccd5bac2fe7a $ [client_version] => 50011 [connect_errno] => 0 [connect_error] => [errno] => 0 [error] => [error_list] => Array ( ) [field_count] => 12 [host_info] ...
如何获取结果集中的行?
请按以下行操作。
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;
更改为 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();
}
只需使用以下行即可从数据库中获取结果
$query = $this->db->get(); $results = $query->result();
并使用以下代码获取找到的行数 $count = $query->num_rows();
public function index()
{
$data['page_title'] = 'Home';
$data['new_grievances'] = $this->admin_home->get_members();
/*Old Code
$data['num_row'] = count($data['new_grievances'] );*/
//New Code
$data['num_row'] = $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');
return $this->db->count_all_results();
}
正如我在
- 如果您只打算在您的视图中使用该值,则只在您的视图中调用
count()
。 - 如果您只打算在您的控制器中使用该值,则只需在您的控制器中调用
count()
。 - 如果您需要控制器和视图中的行数,则写D.R.Y。编码并将行计数缓存为控制器中的变量,然后将其传递给视图。
最后,我建议您不要使用可通过 O(1) 函数调用立即访问的数据来膨胀变量范围。