Scout(スカウト、斥候)は、Eloquentモデルへ、シンプルなドライバベースのフルテキストサーチを提供します。モデルオブサーバを使い、Scoutは検索インデックスを自動的にEloquentレコードと同期します。現在、ScoutはAlgoliaドライバを用意しています。カスタムドライバは簡単に書けますので、独自の検索を実装し、Scoutを拡張できます。インストール最初に、Composerパッケージマネージャを使い、Scoutをインストールします。Artisanコマンドを使用し、Scout設定ファイルを公開します。このコマンドは、configディレクトリ下にscout.php設定ファイルを公開します。--provider="Laravel\Scout\ScoutServiceProvider"最後に、検索可能にしたいモデルへ、Laravel\Scout\Searchableトレイトを追加します。このトレイトはモデルオブザーバを登録し、サーチドライバとモデルの同期を取り続けます。Searchable;}キューScoutを厳格(リアルタイム)に利用する必要が無いのであれば、このライブラリを使用する前にキュードライバの設定を考えてみるべきでしょう。キューワーカの実行により、モデルの情報を検索インデックスに同期する全操作をキューイングでき、アプリケーションのWebインターフェイスのレスポンス時間を改善できるでしょう。キュードライバを設定したら、config/scout.php設定ファイルのqueueオプション値をtrueに設定してください。idとsecret接続情報をconfig/scout.php設定ファイルで設定する必要があります。SDKをComposerパッケージマネージャで、インストールする必要があります。各Eloquentモデルは、検索可能レコードすべてを含む、指定された検索「インデックス」と同期されます。言い換えれば、各インデックスはMySQLテーブルのようなものであると、考えられます。デフォルトで、各モデルはそのモデルの典型的な「テーブル」名に一致するインデックスへ保存されます。通常、モデルの複数形ですが、モデルのsearchableAsメソッドをオーバーライドすることで、このモデルのインデックスを自由にカスタマイズ可能です。}}検索可能データの設定デフォルトでは、指定されたモデルのtoArray形態全体が、検索インデックスへ保存されます。検索インデックスと同期するデータをカスタマイズしたい場合は、そのモデルのtoSearchableArrayメソッドをオーバーライドできます。}}モデルIDの設定Scoutはデフォルトとして、モデルの主キーを検索インデックスへ保存するユニークなIDとして使用します。この振る舞いをカスタマイズしたい場合は、モデルのgetScoutKeyメソッドをオーバーライドしてください。}}インデックスバッチ取り込み既存プロジェクトにScoutをインストールする場合、検索ドライバへ取り込むために必要なデータベースレコードは、既に存在しています。Artisanコマンドを提供しています。"App\Post"flushコマンドは、検索インデックスからモデルの全レコードを削除するために使用します。"App\Post"レコード追加モデルにLaravel\Scout\Searchableトレイトを追加したら、必要なのはモデルインスタンスをsaveすることです。これにより自動的に検索インデックスへ追加されます。Scoutでキューを使用する設定にしている場合は、この操作はキューワーカにより、バックグランドで実行されます。...$order->save();クエリによる追加Eloquentクエリにより、検索インデックスへモデルのコレクションを追加したい場合は、Eloquentクエリにsearchableメソッドをチェーンします。searchableメソッドは、クエリの結果をチャンクへ分割し、レコードを検索エンジンへ追加します。この場合も、Scoutでキューを使用する設定をしていれば、キューワーカが全チャンクをバックグランドで追加します。コレクションにより、追加することもできる$orders->searchable();searchableメソッドは"upsert(update+insert)"操作と考えられます。言い換えれば、モデルレコードがインデックスへ既に存在していれば、更新されます。検索エンジンに存在していなければ、インデックスへ追加されます。検索可能モデルを更新するには、モデルインスタンスのプロパティを更新し、saveでモデルをデータベースへ保存します。Scoutは自動的に変更を検索インデックスへ保存します。注文を更新...$order->save();モデルのコレクションを更新するためにも、Eloquentクエリのsearchableメソッドを使用します。検索エンジンにモデルが存在していない場合は、作成します。コレクションによる更新も可能$orders->searchable();レコード削除インデックスからレコードを削除するには、データベースからモデルをdeleteで削除します。この形態による削除は、モデルのソフト削除と互換性があります。App\Order::find(1);$order->delete();レコードを削除する前に、モデルを取得したくない場合は、Eloquentクエリインスタンスかコレクションに対し、unsearchableメソッドを使用します。コレクションによる削除も可能$orders->unsearchable();インデックスの一時停止Eloquentモデルをバッチ処理するが、検索インデックスへモデルデータを同期したくない場合も時々あります。withoutSyncingToSearchメソッドを使用することで可能です。このメソッドは、即時に実行されるコールバックを1つ引数に取ります。コールバック中のモデル操作は、インデックスへ同期されることはありません。モデルアクションの実行...});条件付き検索可能モデルインスタンス特定の条件下でのみ、モデルを検索可能にする必要がある場合も起きるでしょう。App\Postモデルが、"draft"か"published"の2つのうち、どちらか1つの状態を取ると想像してください。「公開済み:published」のモデルのみ検索可能にする必要があります。これを実現するには、モデルにshouldBeSearchableメソッドを定義してください。$this->isPublished();}shouldBeSearchableメソッドは、saveメソッド、クエリ、リレーションによるモデル操作の場合のみ適用されます。searchableメソッドを使用し、直接searchableなモデルかコレクションを作成する場合は、shouldBeSearchableメソッドの結果をオーバーライドします。"shouldBeSearchable"はオーバーライドされる$orders->searchable();$order->searchable();検索searchメソッドにより、モデルの検索を開始しましょう。searchメソッドはモデルを検索するために使用する文字列だけを引数に指定します。getメソッドを検索クエリにチェーンし、指定した検索クエリに一致するEloquentモデルを取得できます。Trek')->get();Scoutの検索ではEloquentモデルのコレクションが返されるため、ルートやコントローラから直接結果を返せば、自動的にJSONへ変換されます。App\Order::search($request->search)->get();});Eloquentモデルにより変換される前の、結果をそのまま取得したい場合は、rawメソッドを使用してください。Trek')->raw();検索クエリは通常、モデルのsearchableAsメソッドに指定されたインデックスを使い実行されます。その代わりに検索に使用するカスタムインデックスをwithinメソッドで使用することもできます。->get();Where節Scoutは検索クエリに対して"WHERE"節を単に追加する方法も提供しています。現在、この節としてサポートしているのは、基本的な数値の一致を確認することだけで、主にIDにより検索クエリを絞り込むために使用します。検索インデックスはリレーショナル・データベースではないため、より上級の"WHERE"節は現在サポートしていません。1)->get();ペジネーションコレクションの取得に付け加え、検索結果をpaginateメソッドでページづけできます。このメソッドは、Paginatorインスタンスを返しますので、Eloquentクエリのペジネーションと同様に取り扱えます。Trek')->paginate();paginateメソッドの第1引数として、各ページごとに取得したいモデル数を指定します。Trek')->paginate(15);結果が取得できたら、通常のEloquentクエリのペジネーションと同様に、結果を表示し、Bladeを使用してページリンクをレンダーできます。}}ソフトデリートインデックス付きのモデルがソフトデリートされ、ソフトデリート済みのモデルをサーチする必要がある場合、config/scout.php設定ファイルのsoft_deleteオプションをtrueに設定してください。true,この設定オプションをtrueにすると、Scoutは検索インデックスからソフトデリートされたモデルを削除しません。代わりに、インデックスされたレコードへ、隠し__soft_deleted属性をセットします。これにより、検索時にソフトデリート済みレコードを取得するために、withTrashedやonlyTrashedメソッドがつかえます。ソフトデリートされたモデルが、forceDeleteにより完全に削除されると、Scoutは自動的に検索インデックスから削除します。エンジンの検索のカスタマイズエンジンの検索の振る舞いをカスタマイズする必要があれば、searchメソッドの第2引数にコールパックを渡してください。Algoliaへサーチクエリが渡される前に、サーチオプションにgeo-locationデータを追加するために、このコールバックが利用できます。$options);})->get();カスタムエンジンエンジンのプログラミング組み込みのScout検索エンジンがニーズに合わない場合、独自のカスタムエンジンを書き、Scoutへ登録してください。エンジンは、Laravel\Scout\Engines\Engine抽象クラスを拡張してください。この抽象クラスは、カスタムエンジンが実装する必要のある、8つのメソッドを持っています。flush($model);これらのメソッドの実装をレビューするために、Laravel\Scout\Engines\AlgoliaEngineクラスが役に立つでしょう。このクラスは独自エンジンで、各メソッドをどのように実装すればよいかの、良い取り掛かりになるでしょう。エンジンの登録カスタムエンジンを書いたら、Scoutエンジンマネージャのextendメソッドを使用し、Scoutへ登録します。AppServiceProviderかアプリケーションで使用している他のサービスプロバイダのbootメソッドで、extendメソッドを呼び出してください。MySqlSearchEngineを書いた場合、次のように登録します。});}エンジンが登録できたら、Scoutのデフォルトdriverとして、config/scout.php設定ファイルで設定します。'mysql',ビルダマクロカスタムビルダメソッドを定義したい場合は、Laravel\Scout\Builderクラスのmacroメソッドを使用してください。通常、「マクロ」はサービスプロバイダのbootメソッドの中で定義します。}}macro関数の最初の引数は、名前を渡します。第2引数はクロージャです。マクロのクロージャはLaravel\Scout\Builder実装から、そのマクロ名を呼び出されたときに実行されます。2019.ドキュメントメンテナンス期間は終了しました。注目:アイコン:ページ内リンク設置(リンクがないヘッダーへの移動では、リンクがある以前のヘッダーのハッシュをURLへ付加します。閉じる移動クリックで即時移動します。適用ボタンクリック後に、全項目まとめて適用されます。Scaffoldスカフォールド型枠生成スカフィールドLargeスクリーン表示幅640px80%90%100%インデントなし1rem2rem3rem本文フォントコードフォントフォント適用確認フォントの指定フィールドから、フォーカスが外れると、当ブロックの内容に反映されます。EnglishのDisplayもPreviewしてください。フォント設定時、表示に不具合が出た場合、当サイトのクッキーを削除してください。バックスラッシュを含むインライン\Code\Blockの例です。以下はコードブロックの例です。}}設定を保存する前に、表示が乱れないか必ず確認してください。CSSによるフォントファミリー指定の知識がない場合は、フォントを変更しないほうが良いでしょう。