1

だから私はAPIの一部を稼働させていますが、いくつかのことに固執しています。私はLaravelのRESTコントローラーを使用しており、Response::eloquent($query);Butなどのメソッドを使用する機能が大好きです。

  1. 取得しているリソースが複数のテーブルを結合している場合、クエリパラメータ(id = 27&order_by = timestampなど)をどのように処理する必要がありますか?
  2. データベースから値を取得してから、APIアクセス用に表示する特定のフィールドのみを含む配列を作成する必要がありますか?そして、これはクエリパラメータでどのように機能しますか?
4

2 に答える 2

4

まず、RESTルートのフォーマットの詳細については、Teach a Dog toREST [リンクが壊れています]をご覧になることをお勧めします。

あなたの質問に関して:

  1. laravel input&cookies docsInput::get() and Input::all()に記載されている方法で、入力フィールドを処理できます。また、laravelのValidatorクラスを使用して受信データを検証する必要がある場合もあります。
  2. 例で説明したように、入力からidフィールドとorder_byフィールドを取得したとします。

    $id = Input::get('id'); $order_criteria = Input::get('order_by');

FluentQueryBuilderを使用する

DB::table('dbtable')->where('id', '=', $id)->order_by($order_criteria, 'desc')->first();

// 1つの結果しか得られないと確信しているため、first()を使用します。結果が返される可能性のある別の基準では、代わりに-> get()を使用することをお勧めします。

于 2013-01-27T12:26:17.043 に答える
3

このためのパッケージをリリースしました。

これをチェックアウトできますhttps://github.com/selahattinunlu/laravel-api-query-builder

wikiページの場合:https ://github.com/selahattinunlu/laravel-api-query-builder/wiki

このパッケージは、urlパラメータを使用してクエリを作成します。

例:

/ api / users?name = se *&age!= 18&order_by = age、asc&limit = 2&columns = name、age、city_id&includes = city

そして結果のクエリ

Users::with(['city'])->select(['name', 'age', 'city_id'])
                     ->where('age', '!=', 18)
                     ->where('name', 'like', 'se%')
                     ->orderBy('age', 'asc')
                     ->take(2)

使用法:

$queryBuilder = new QueryBuilder(new User, $request);

return response->json([
  'data' => $queryBuilder->build()->paginate(),
  .
  .
]);

それで全部です。

于 2015-10-18T17:54:59.990 に答える