当我试图获取对象返回时,我在Codeignter中遇到了一个问题,一些控制器代码是
$sql = $this->user_model->userdetail($data);
if ($sql) {
echo json_encode(array(
"status" => "0",
"message" => "",
"data" => $sql
));
exit();
}
型号代码是
function userdetail($data) {
$id = $data["id"];
$sql = "select email, name from user where id='".$id."'";
$query = $this->db->query($sql);
if ($query->num_rows() > 0) {
return $query->result_array();
}
return $query->num_rows();
}
我可以得到结果
{
"status": "0",
"message": "",
"data": [
{
"email": "lily@email.com",
"name": "lily"
}
]
}
这里的data
是一个数组,但它应该是一个对象,上面的结果应该是这样的
{
"status": "0",
"message": "",
"data": {
"email": "lily@email.com",
"name": "lily"
}
}
我在模型代码中将return $query->result_array();
改为return $query->result_object();
,但是它不起作用,我该怎么办?非常感谢。
4条答案
按热度按时间vsdwdz231#
您的问题是您正在使用result_array()。您必须改用row(),row() 函数将为您提供对象而不是数组。
型号代码:
wf82jlnq2#
我想我找到原因了,在模型
它们可以返回数组或对象,并在控制器文件中
$sql
应该是数组或对象,但实际上它返回的多维数组如下所示返回结果()或结果对象()
返回结果数组()
真奇怪。
xriantvc3#
在codeigniter中,
$query->result_array();
用于以数组格式返回结果。要获取对象格式的结果,请使用
$query->result();
,如对于单行,使用
$query->result_array()
vi4fp9gy4#
也许您需要在json_encode中使用JSON_FORCE_OBJECT。