Как получить данные из базы данных с perticular id, а не все данные, используя API в codeigniter с почтальоном - PullRequest
0 голосов
/ 31 мая 2018

Привет! Я написал код для получения данных из таблицы для конкретного города по его конкретному идентификатору, но всякий раз, когда я использую метод get в почтальоне, он получает все данные, а не данные о конкретном городе, основываясь на идентификаторе, даже в URL-адресе, указанном идентификатором, с помощью переменной get.так как получить только те данные, которые упомянуты его идентификатором.

Ниже кода моего контроллера

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

require_once APPPATH . '/libraries/REST_Controller.php';


class Cities extends REST_Controller
{
    public function __construct()
    {
        parent::__construct();
        $this->load->model('cities_model');
    }

    public function index_get()

    {
          $id = $this->get('id');
        $cities = $this->cities_model->get($id);

        if (!is_null($cities)) {
            $this->response(array('response' => $cities), 200);
        } else {
            $this->response(array('error' => 'No hay ciudades en la base de datos...'), 404);
        }
    }
?>

ниже код написан в модели

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Cities_model extends CI_Model
{
    public function __construct()
    {
        parent::__construct();
    }

    public function get($id)
    {
        if (!is_null($id)) {
            $query = $this->db->select('*')->from('cities')->where('id', $id)->get();
            if ($query->num_rows() === 1) {
                return $query->row_array();
            }

            return null;
        }

        $query = $this->db->select('*')->from('cities')->get();
        if ($query->num_rows() > 0) {
            return $query->result_array();
        }

        return null;
    }
?>

URL, который яиспользовал в почтальоне вот так

по правилу 1

http://localhost:81/weatherapi/index.php/Cities/index?=1

по правилу 2

http://localhost:81/weatherapi/index.php/Cities/index/1

получая вывод вот так

Ответы [ 3 ]

0 голосов
/ 31 мая 2018
public function index_get($id)

{
    $cities = $this->cities_model->get($id);

    if (!is_null($cities)) {
        $this->response(array('response' => $cities), 200);
    } else {
        $this->response(array('error' => 'No hay ciudades en la base de datos...'), 404);
    }
}

и URL-адрес

http://localhost:81/weatherapi/index.php/Cities/index/1
0 голосов
/ 31 мая 2018

Надеюсь, это поможет вам:

Убедитесь, что вы получаете $id в вашем контроллере и передаете его в модель

Поставьте запрос с помощьюесли еще в вашей модели, как это:

public function get($id)
{
    if (! empty($id)) 
    {
        $query = $this->db->select('*')->from('cities')->where('id', $id)->get();
        if ($query->num_rows() > 0) 
        {
            return $query->row_array();
        }
    }
    else
    {
        $query = $this->db->select('*')->from('cities')->get();
        if ($query->num_rows() > 0) 
        {
            return $query->result_array();
        }
    }     

}
0 голосов
/ 31 мая 2018

Поскольку вы получаете идентификатор города из url по $ id = $ this -> get ('id') ;

попробуйте вызвать url, как показано ниже

http://localhost:81/weatherapi/index.php/Cities/index?id=1

в противном случае значение для $ id будет нулевым и будет обработано вашим условием , если (! Is_null ($ id)) в функции модели

...