0

框架:CI

情况:

我在codeigniter中有这个非常令人沮丧的问题。

这是代码:(控制器)

class sampleController extends CI_Controller {

function index() {
    data['message'] = 'something';

    data['js'] = array('script1.js', 'script2.js');
    data['css'] = array('style1.css', 'style2.css', 'style3.css');

    $this->load->model('user_model');
    $user = $this->input->post('username');

    data['user_id'] = $this->user_model->getUserIdByUsername($user);
    data['user_info'] = $this->user_model->getAllUserInfo($user);

    $this->load->view('someview', $data);

}

}

好的,我的控制器去了,我传递了几个数据,比如js,,和cssuser_iduser_info

这是我的模型中的方法:

getUserIdByUsername($user) {
$this->db->select("id");
$this->db->where("username", $user);
$result = $this->get("users");
return $result->row();

}

getAllUserInfo($user) {
$this->db->select("first_name, last_name, age");
$this->db->where("username", $user);
$result = $this->get("users");
return $result->row();
}

问题出现在视图中,当我尝试访问控制器传递的所有变量时

  1. 如果我尝试回显$message,它将像这样正确渲染=something
  2. 如果我尝试循环使用 foreach$js$css像这样

    foreach($js as $key){//echo script here}

    foreach($css as $key){// echo link rel stylesheet here}

<script src='script1.js'></script><script ...></script>它会像迭代$js一样正确渲染css

但如果我尝试回显 $user_id 。. 它不会,因为。它是一个对象。

所以为了解决这个问题我所做的是。. <?php foreach($user_id as $id){} ?>在这种情况下,我可以回显 $id 无论如何,这样我就可以简单地回显它,而不会出现混乱的 foreach。

我明白,当我谈到时$user_info,这样做很好,foreach($user_info as $key => $value){$info[$key]=$value} 但是在视图中是否有更好的方法呢?

也许在视图可以使用之前发送数组而不是对象?

非常感谢

编辑:固定相同的方法名称;

4

4 回答 4

3

$result->row();返回一个包含所有选定字段的对象。仅仅因为您只SELECT编辑了该id字段并不会更改返回值。试试这个:

$data['user_id'] = $this->user_model->getUserIdByUsername($user)->id;

或者:

getUserIdByUsername($user) {
    $this->db->select("id");
    $this->db->where("username", $user);
    $result = $this->get("users");
    return $result->row()->id;
}

如果您想要数组而不是对象,请查看 CI 文档以获取有关生成查询结果的更多信息:

result_array()

该函数将查询结果作为纯数组返回,或者在没有结果时返回空数组。

row_array()

与上面的 row() 函数相同,除了它返回一个数组。

于 2012-10-12T19:25:45.417 回答
2

使用{$user_id[0]['id']}时,它应该在视图中回显用户 ID。顺便说一句,在您的问题中,两种方法名称都相同,我认为第二个应该是getAllUserInfo($user)

于 2012-10-12T18:54:41.647 回答
1

就像你说的,它是一个对象。因此,您可以像访问字段一样访问字段。

echo $user_id->id;
于 2012-10-12T19:26:08.010 回答
1

如果您对此感兴趣,则在模型中使用 row_array 函数会将其作为数组而不是对象返回。您可以在此处阅读生成查询结果:http: //ellislab.com/codeigniter/user_guide/database/结果.html

于 2012-10-12T19:54:07.133 回答