【问题标题】:Why does CodeIgniter return my SQL query as an array, with an object inside?为什么 CodeIgniter 将我的 SQL 查询作为数组返回,其中包含一个对象?
【发布时间】:2015-12-11 18:55:01
【问题描述】:

我在名为 'Profile_model' 的 codeigniter 中构建了一个 model,其中包含以下 sql 查询,并且应该返回 user_name具有给定 id 的用户('userpdata' 是包含此信息的表):

public function get_username($id)
{
  $query = $this->db->select('user_name')
                    ->where('id', $id)
                    ->get('userpdata');
  return $query->result();
}

我已经像这样从控制器传入了当前用户的$id(模型被称为'profile'):

$userId = strval($this->ion_auth->get_user_id());
$data = array(
    'username' => $this->profile->get_username($userId)
    );

$this->load->view('user/profile', $data);

用户/个人资料视图:

<?php 
  print_r($username);
?>

这会返回字符串:

数组([0] => stdClass 对象([user_name] => hish))

这似乎是一个包含对象的数组。我怎样才能只检索 user_name 'hish'

【问题讨论】:

  • 一般搜索结果总是数组或对象数组。 CI 在检索结果时无疑会使用其选择的 db 库的“fetchObject()”函数。

标签: php mysql codeigniter


【解决方案1】:

$query-&gt;result(); 更改为$query-&gt;row();,这样您就不会得到数组。 result() 方法返回一个行数组,每一行都是一个对象。 row() 方法返回结果集的第一个对象。

public function get_username($id)
{
  $query = $this->db->select('user_name')
                    ->where('id', $id)
                    ->get('userpdata');
  return $query->row();
}

您最终会得到包含属性user_name 的对象。您可以在控制器中获取它的值。

$user = $this->profile->get_username($userId);
$data = array(
    'username' => $user->user_name
);

或者您可以在不更改控制器的情况下在视图中获取它并使用此$username-&gt;user_name

Codeigniter - Generating Query Results

【讨论】:

  • 太棒了,我已经开始工作了。谢谢!我会在几分钟内接受你的回答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-18
  • 2017-12-01
  • 1970-01-01
相关资源
最近更新 更多