为什么CodeIgniter将我的SQL查询作为数组返回,其中包含一个对象?

时间:2015-12-11 18:55:01

标签: php mysql codeigniter

我在codeigniter中构建了一个名为'Profile_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] =&gt; stdClass对象([user_name] =&gt; hish))

这似乎是一个包含对象的数组。如何只检索 user_name 'hish'

1 个答案:

答案 0 :(得分:0)

$query->result();更改为$query->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->user_name

Codeigniter - Generating Query Results