我有一个名为get_all_Emp()
模型的函数返回,
return $this->db->get();
我在控制器中调用的方式
$items = $this->Item->get_all_Emp();
但不返回结果,而是返回CI_DB_mysqli_result Object
,即
CI_DB_mysqli_result Object
(
[conn_id] => mysqli Object
(
[affected_rows] => 24
[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] => 44
[host_info] => Localhost via UNIX socket
[info] =>
[insert_id] => 0
[server_info] => 5.7.22-0ubuntu0.16.04.1
[server_version] => 50722
[stat] => Uptime: 540 Threads: 1 Questions: 1117 Slow queries: 0 Opens: 385 Flush tables: 1 Open tables: 171 Queries per second avg: 2.068
[sqlstate] => 00000
[protocol_version] => 10
[thread_id] => 36
[warning_count] => 0
)
[result_id] => mysqli_result Object
(
[current_field] => 0
[field_count] => 44
[lengths] =>
[num_rows] => 24
[type] => 0
)
[result_array] => Array
(
)
[result_object] => Array
(
)
[custom_result_object] => Array
(
)
[current_row] => 0
[num_rows] => 24
[row_data] =>
)
但是如果我使用
$query = $this->db->get();
$result = $query->result();
return $result;
我得到了适当的结果,而不是return get_all_Emp()
。
所以有没有办法使用以前的方法来做到这一点,但仍然得到答案
谢谢您的建议
答案 0 :(得分:1)
对于数组结果,可以使用result_array()。只需在您的模型中将其返回:
return $this->db->get("table_name")->result_array();
得到这样的东西
Array(
[0] => Array('col1' => 'somedata', 'col2' => 'somedata2'),
[1] => Array('col1' => 'somedata', 'col2' => 'somedata2'),
)
文档here
答案 1 :(得分:1)
您似乎对数组和对象之间感到困惑。通过简单的Google搜索,有很多与此相关的信息,但从本质上讲,它可以归结为:
如果您有一个名为name
的列,其中包含一个数组,您将执行类似$row['name']
的操作,而使用一个对象则执行了$row->name
,则表示法将有所不同,更多的是风格比什么都重要。我更喜欢使用一个对象,但如果必须进行操作,数组会更有用。
另外的get()
实际上并不返回结果对象。
$this->db->get()->result()
为参数中的所有行返回一个对象$this->db->get()->row()
返回一行对象$this->db->get()->result_array()
返回参数中所有行的数组$this->db->get()->row_array()
返回单个行的数组因此,在函数中,如果要使用数组,请假设已经设置了from条件,请执行return $this->db-get()->result_array();
。