Как вернуть объект вместо массива в Codeigniter? - PullRequest
1 голос
/ 16 июня 2019

У меня возникает вопрос в 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(); в коде модели, но он не работает, что мне здесь делать?Большое спасибо.

Ответы [ 3 ]

0 голосов
/ 16 июня 2019

В codeigniter $query->result_array(); используется для возврата результата в массиве Format.

Для получения результата в формате объекта используйте $query->result(); как

if ($query->num_rows() > 0) {
        return $query->result();
    }

Для однорядного использования $query->result_array()

0 голосов
/ 16 июня 2019

Может быть, вам нужен JSON_FORCE_OBJECT в json_encode.

echo json_encode(array(
        "status" => "0",
        "message" => "",
        "data" => $sql), JSON_FORCE_OBJECT);
0 голосов
/ 16 июня 2019

Мне кажется, я нахожу причину, в модели

return $query->result_array(); // also can be changed to return $query->result_object(); or return $query->result();

Они могут возвращать массив или объект, а в файле контроллера

$sql = $this->user_model->userdetail($data);

$sql должен быть массивом или объектом, но на самом деле он возвращает многомерные массивы, подобные этому

return result () или result_object ()

Array
(
    [0] => stdClass Object
        (
            [email] => lily@email.com
            [name] => lily
        )

)

return result_array ()

Array
(
    [0] => Array
        (
            [email] => lily@email.com
            [name] => lily
        )

)

это странно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...