6

開発中のモバイル アプリの Web サービス バックエンドを作成しています。(私は経験豊富な Obj-C 開発者であり、Web デザイナーではありません!) 基本的には、Codeigniter と Phil Sturgeon の RESTful API サーバーhttps://github.com/philsturgeon/codeigniter-restserverを使用したいと考えています。すべてのセットアップと動作に問題があります。

その中にデータを入れてセットアップされたMySQLデータベースがあります。そして、そのデータベースの内容の JSON データを返す CodeIgniter PHP モデルとコントローラーを作成するための助けが必要です。私が見つけたすべてのチュートリアルとフォーラムの投稿は、MySQL データベースではなく、コントローラーのハードコードされたデータを扱っています。理想的には、このhttp://api.mysite.com/v1/search?id=1&name=foo&city=barのように URL をフォーマットしたいと思います。URLに渡すパラメーターが 50 以上ある可能性があります。

Phil のコードを使用して、コントローラーとしてこれを思いつきました。

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

    $data = $this->grid_m->get_id($this->get('id'));
    if ($data)
    {
        $this->response($data, 200);
    }
    else
    {
        $this->response(NULL, 404);
    }
}

id?=# という 1 つの検索語しか取得できません。複数の検索語を取得する方法を知る必要があります。

ここに私のコードイグナイターモデルがあります:

<?php

class Grid_m extends CI_Model
{

function get_all()
{
    $query = $this->db->get('grid');
    if ($query->num_rows() > 0)
    {
        return $query->result();
    }
    return FALSE;;
}

これは、URL で渡す ID または URL 用語に関係なく、MySQL データベースのすべてを返すだけです。

私は独自のカスタム API を開発することに関しては非常に初心者なので、コントローラーとデータベース モデルを修正する方法についての提案は非常に役立ちます!

助けてくれてありがとう!

-ブライアン

4

3 に答える 3

1

これは古い質問ですが、誰かがここに行ってまだ助けが必要な場合は、次のコードを試してください:

コントローラーで:

public function index_get()  
{  
    $where = '';  

    if ($this->get('id'))  // search by id when id passed by
    {              
        $where .= 'id = '.$this->get('id');  
    }  

    if ($this->get('name'))  // add search by name when name passed by        
    {  
        $where .= (empty($where)? '' : ' or ')."name like '%".$this->get('name')."%'";  
    }  

    if ($this->get('city'))  // add search by city when city passed by  
    {  
        $where .= (empty($where)? '' : ' or ')."city like '%".$this->get('city')."%'";  
    }  

    // you can add as many as search terms

   if ( ! empty($where))  
   {  
       $data = $this->grid_m->get_searched($where);  

       if ($data)  
       {  
           $this->response($data, 200);  
       }  
       else  
       {  
           $this->response(NULL, 404);  
       }  
    }  
    else  
    {  
        $this->response(NULL, 404);  
     }  
}

モデルで、get_searched関数 を作成します。

class Grid_m extends CI_Model  
{  
   function get_searched($where = NULL)  
   {  
      if ( ! is_null($where))  
      {  
          $this->db->where($where);  
          $query = $this->db->get('grid');  

          if ($query->num_rows() > 0)  
          {  
              return $query->result();  
          }  
       }  
       return FALSE;  
    }  
}  
于 2013-10-29T08:23:44.570 に答える
0

Codeigniterのアクティブ レコードを使用して適切なクエリを作成します。アクティブ レコードのメソッドを使用して任意のタイプのクエリを作成できます。

 <?php
class Grid_m extends CI_Model
{    
  function get_all()
  {
     $this->db->select('col1, col2, col3')->where('id', 5);
     $query = $this->db->get('grid');

    if ($query->num_rows() > 0)
    {
        return $query->result();
    }
    return FALSE;;
  }

}
于 2012-11-25T07:55:26.843 に答える
0

クエリを確認してください

$query = $this->db->get_where('grid', array('id' => $id));
于 2012-11-25T08:02:59.533 に答える