2012-10-12 97 views
0

框架:CI笨传递数组,而不是对象

现状:

我有这个笨非常令人沮丧的问题。

这里是代码: (控制器)

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); 

} 

} 

还好还有我的控制,我通过几个数据,如jscssuser_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(); 
} 

问题发生在视图中,当我尝试acc ESS已经由控制器

  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} 但有没有更好的方式,在视图中做到这一点?

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

感谢muchs

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

回答

3

$result->row();返回一个对象与所有选定的领域。仅仅因为你只有SELECT ed id字段不会改变返回值。试试这个:

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

OR:

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

检查more information about generating query results的CI文档,如果你想数组而不是对象:

result_array()

该函数返回查询结果为纯数组,或当没有结果产生时为空的数组结果uced。

row_array()

与上述相同行()函数,除了它返回一个数组。

+0

这是相当我想要的很多。但我会等待更多... –

+0

这*是*你想要的;) –

+0

等待更多什么?这是正确的答案:) –

2

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

1

就像你说的那样,这是一个对象。所以你像一个访问字段。

echo $user_id->id;