如何使用具有特定id的数据库获取数据,而不是使用带有邮递员

时间:2018-05-31 06:37:52

标签: php api codeigniter postman

您好我已经编写了代码,以便通过特定ID从特定城市的表中获取数据,但每当我在邮递员中使用get方法时,即使在url提到的id中也使用get变量检索所有数据而不是基于id的特定城市数据。那么如何只得到它所提到的数据。

在我的控制器代码下面

<?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;
    }
?>

我在邮差中使用的网址是这样的

按规则1

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

按规则2

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

获得这样的输出

3 个答案:

答案 0 :(得分:0)

当您通过$ id = $ this-&gt; get(&#39; id&#39;);

从网址获取城市ID时

尝试调用以下网址

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

否则, $ id 的值将为null并由您的条件 if model(!is_null($ id))处理模型函数

答案 1 :(得分:0)

:

和网址

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);
    }
}

答案 2 :(得分:0)

希望这会对您有所帮助:

确保您在控制器中获得$id并将其传递给模型

在模型中使用if else进行查询,如下所示:

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();
        }
    }     

}