ガイド

プロローグ

Orion for Laravel 2.0の変更点と新機能について説明します。

リリースノート

OpenAPI仕様書の生成

以下のコマンドを実行するだけで、Orionで実装されたすべてのエンドポイントのOpenAPI仕様書を自動生成できるようになりました。

php artisan orion:specs

この機能の詳細については、本ガイドの仕様書セクションを参照してください。

JSONフィールドの検索

2.0リリースでは、JSONフィールドのサポートが導入され、検索機能がさらに強化されました。

// (POST) https://myapp.com/api/posts/search
{
    "filters" : [
        {"field" : "options->visible", "operator" : ">=", "value" : true},
    ],
    "search" : {
        "value" : "Example post"
    },
    "sort" : [
        {"field" : "options->key", "direction" : "asc"},
    ]
}

JSONフィールド内のフィールドをホワイトリストに登録するには、アロー記法を使用します。

<?php

namespace App\Http\Controllers\Api;

use Orion\Http\Controllers\Controller;

// ここでの options フィールドは Post モデルの json/jsonb フィールドです
// visible と key フィールドはその json/jsonb フィールド内のフィールドです
class PostsController extends Controller
{
    public function filterableBy() : array
    {
        return ['options->visible'];
    }

    public function searchableBy() : array
    {
        return [ 'options->key'];
    }

    public function sortableBy() : array
    {
         return ['options->key'];
    }
}

ネストしたリレーションの検索

これまでは、リレーションのフィールドに対する検索は1階層までしかできませんでした。例:

public function searchableBy() : array
{
    return ['user.name']; // user リレーションの name フィールド
}

このリリースにより、深くネストしたリレーションに対しても検索を実行できるようになりました。

public function searchableBy() : array
{
    return ['user.name', 'user.location.address.postalcode']; // 深くネストされた user.location.address リレーションの postalcode フィールド
}

フックメソッドのシグネチャ

リレーションコントローラーのフックメソッドに、親エンティティが渡されるようになりました。例:

protected function afterSave(Request $request, Model $parentEntity, Model $entity)

デフォルト認証ガードの解決

デフォルトの認証ガードは、orion.php設定ファイルのauth.guardキーから解決されるようになりました。

認証ガードやユーザーの解決を細かく制御する必要がある場合は、引き続きコントローラーのresolveUserメソッドをオーバーライドできます。

ilikeおよびnot ilike演算子のサポート

// (POST) https://myapp.com/api/posts/search
{
    "filters" : [
        {"field" : "title", "operator" : "ilike", "value" : "example post"},
    ]
}

アップグレードガイド

このガイドでは、Laravel Orionをv1.xからv2.xへアップグレードする手順を説明します。

PHP 7.3が必須

最低限必要なPHPのバージョンは7.3.0になりました。

依存関係の更新

composer.jsonファイル内の以下の依存関係を更新します。

  • php>=7.3に更新します
  • tailflow/laravel-orion^2.0に更新します

設定ファイルの公開

このリリースではorion.php設定ファイルが導入され、デフォルトの認証ドライバーや、仕様書生成に使用するAPIの情報をカスタマイズできるようになりました。

設定ファイルを公開するには、以下のコマンドを実行します。

php artisan vendor:publish --tag=orion-config

ホワイトリスト登録メソッドのシグネチャ

以下のメソッドはpublicに変更されました。

  • exposedScopes
  • filterableBy
  • searchableBy
  • sortableBy
  • includes
  • alwaysIncludes

これらのメソッドをオーバーライドしている場合は、コントローラーを適宜更新してください。

フックメソッドのシグネチャ

2.0リリース以降、フックメソッドには親エンティティが渡されます。フックメソッドをオーバーライドしている場合は、リレーションコントローラーを適宜更新してください。

以下に例を示します。

2.0より前

protected function afterSave(Request $request, Model $entity)

2.0以降

protected function afterSave(Request $request, Model $parentEntity, Model $entity)