框架: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
,css
,user_id
和user_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();
}
当我试图访问控制器传递的所有变量时,视图中出现问题
$message
,它会像这样正确地呈现出来something
如果我尝试使用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}
但是在视图中有更好的方法吗?
也许代替对象,在视图可以使用它之前发送数组?
非常感谢
编辑:修复相同的方法名称;
答案 0 :(得分: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;
}
OR:
result_array()
如果您想要数组而不是对象,请检查more information about generating query results的CI文档:
row_array()
此函数将查询结果作为纯数组返回,或者为空 没有产生结果的数组。
{{1}}
与上面的row()函数相同,但它返回一个数组。
答案 1 :(得分:2)
使用{$user_id[0]['id']}
,它应该在视图中回显用户ID。在您的问题中,两个方法名称相同,我认为第二个应该是getAllUserInfo($user)
答案 2 :(得分:1)
就像你说的那样,这是一个对象。所以你可以访问像这样的字段。
echo $user_id->id;
答案 3 :(得分:1)
使用模型中的row_array函数会将其作为数组而不是对象返回,如果这是您感兴趣的内容。您可以在此处阅读生成查询结果:http://ellislab.com/codeigniter/user_guide/database/results.html