如何在codeigniter-base-model中加载所有行? REST api

时间:2017-02-12 16:10:06

标签: php mysql codeigniter

我正在尝试通过Postman为我的REST API加载所有行。

我正在使用codeigniter-base-model MY_Model.php。

https://github.com/jamierumbelow/codeigniter-base-model

这就是我的代码目前在我的控制器/模型中的样子:

控制器(api_news.php)

class Api_News extends REST_Controller {

function __construct() 
{
    parent::__construct();
}

function index_get()
{
    $id = $this->uri->segment(3);
    $this->load->model('News_model');
    $news = $this->News_model->get_by(array('id' => $id));

    if(isset($news['id'])) {
        $this->response(array(
            'message' => 'success', 
            'status' => 'true', 
            'data' => $news));
    } else {
        $this->response(array(
            'message' => 'unsuccess', 
            'status' => 'false'));
    }
}
}

模型(news_model.php)

class News_model extends MY_Model{

protected $_table = 'news';
protected $primary_key = 'id';
protected $return_type = 'array';

}

目前我可以访问:

localhost / my_api / api_news / id / 1,2,3等......

我可以通过其个人ID访问任何记录,并显示哪个记录很棒。

但我也希望通过这样做能够看到所有行:

本地主机/ my_api / api_news / ID /

并立即显示所有行。

但我不知道该怎么做......如果我尝试,我会失败/失败。

你能告诉我怎么样吗?我是PHP新手,我很感激任何帮助。

非常感谢!!

1 个答案:

答案 0 :(得分:0)

在控制器功能中进行一些更改,如下所示 -

function index_get(){
    $id = $this->uri->segment(3);
    $this->load->model('News_model');

    // pass $id to model 
    $news = $this->News_model->get_by( $id );

    if( !empty( $news ) ) {
        $this->response(array(
            'message' => 'success', 
            'status' => 'true', 
            'data' => $news));
    } else {
        $this->response(array(
            'message' => 'unsuccess', 
            'status' => 'false'));
    }

}

在你的模型中make id参数是可选的,然后检查是否传递id获取基于id的数据否则返回所有数据,如下所示 -

// $id variable is optional here
function get_by( $id = '' ) {

    if ( $id == '' ) {
        $news = $this->db->get( 'news' );
    }
    else {
        $news = $this->db->get_where( 'news', array( 'id' => $id ) );
    }

    // return data to controller
    return $news->result();

}

因此,如果您在API中输入id,则数据将基于该ID,否则将返回所有数据。