プロローグ
リリースノート
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に変更されました。
exposedScopesfilterableBysearchableBysortableByincludesalwaysIncludes
これらのメソッドをオーバーライドしている場合は、コントローラーを適宜更新してください。
フックメソッドのシグネチャ
2.0リリース以降、フックメソッドには親エンティティが渡されます。フックメソッドをオーバーライドしている場合は、リレーションコントローラーを適宜更新してください。
以下に例を示します。
2.0より前
protected function afterSave(Request $request, Model $entity)
2.0以降
protected function afterSave(Request $request, Model $parentEntity, Model $entity)