我正在尝试通过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新手,我很感激任何帮助。非常感谢!!
答案 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,否则将返回所有数据。