CodeIgniter Запросить неверный массив Результат в контроллере REST - PullRequest
0 голосов
/ 29 февраля 2012

Я тестирую REST-модуль CodeIgniter, вот моя простая функция GET:

    function test_get()
{
    if(!$this->get('id'))
    {
        $this->response(NULL, 400);
    }

    $query = $this->db->query('select * from test');
    $users = $query->result();

    $user = @$users[$this->get('id')];

    if($user)
    {
        $this->response($user, 200); // 200 being the HTTP response code
    }

    else
    {
        $this->response(array('error' => 'User could not be found'), 404);
    }
}

Пока это работает, но я не уверен, почему я получаю id 2 какрезультат при открытии http: //.../test/id/1

<xml><id>2</id><attribut1>Testdata</attribut1><attribut2>asdfasdf</attribut2><testcol>asf</testcol></xml>

Когда я открываю http: //.../test/id/2 В результате я получаю идентификатор 3.

Разве это не http: //.../test/id/1 -> идентификатор 1?

1 Ответ

1 голос
/ 29 февраля 2012

Это не совсем единственная проблема. Вы индексируете массив $users (который начинается с нуля), но ваши идентификаторы основаны на 1. У вас будут еще худшие проблемы, когда в ваших идентификаторах пользователей будут пропуски (вы будете выбрасываться случайными приращениями, а не просто 1). Попробуйте вместо этого:

function test_get()
{
    if(!$this->get('id'))
    {
        $this->response(NULL, 400);
    }

    $user = $this->db->where('id', $this->get('id'))->get('test')->first_row();

    if($user)
    {
        $this->response($user, 200); // 200 being the HTTP response code
    }

    else
    {
        $this->response(array('error' => 'User could not be found'), 404);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...