Laravelでサイト内に検索フォームを無料で簡単に設置する方法

Laravel・PHP豆知識・トラブル対策
スポンサーリンク

Spatie Searchableパッケージで、Laravelで簡単に検索フォームを設置する方法を解説します。

Googleの検索ボックスは会員制サイトはムリ。
ScoutとAlgoriaを使う方法もありますが、Algoriaは一定以上利用すると有料になります。

「回数制限付きだと落ち着かない」
「条件なしで無料で使いたい!」

という場合には、今回ご紹介するパッケージがおすすめ。

スポンサーリンク

Laravelでサイト内全文検索フォームを無料で簡単に設置する方法

今回は、textsテーブルのbodyカラムを検索するフォームを作っていきます。

データベース内のテーブルは、このような構造になっています。

今回はこの中の bodyカラムの中身を検索。

検索結果は titleカラムを表示するようにします。

仕上がりイメージはこちら。

①パッケージインストール

まずはパッケージをインストールしましょう。

②モデルファイルを編集

次に検索対象のモデルファイルを開きます。

一番上にuse宣言を入れ、さらにimplements Searchableと加えます。

さらに getSearchResultメソッドを追加。

メソッド内のABの部分は、状況に応じて変更してください。

A検索結果のリンク先となります。

通常は (モデル名.show) のルート設定を入れておきます。

Bは検索結果で表示したいカラムを入れます。

③ ルート設定を作成

次に、ルート設定を作成しておきます。

④ コントローラーを作成

次に、コントローラーを作成します。

コントローラーの最初に、searchableと、検索に使うモデルのためのuse宣言を入れます。

C には検索するモデル名と、カラムを入れます。

これで下準備完了。

⑤ 検索ボックスを作成

次にビュー部分を作っていきます。

最初に検索ボックスですが、action に先ほど作成した search.result を設定する以外は、通常どおり。

デザインはお好きなものにしてください。

⑥ 検索結果表示画面を作成

次にroutes/views の中にsearchフォルダを作り、その中にresult.blade.phpファイルを作成します。

これで出来上がり。

なお、検索対象のモデル(テーブル)は複数設定できます。

その場合、他のモデルも同じように設定します。

さらにコントローラーの「C 」の部分をコピペし、追加したモデルの情報も入れるようにしてください。

じゅんこ
じゅんこ

素敵な検索ボックスを作って、サイトの使い勝手をあげいきましょう♪

Laravel・PHP豆知識・トラブル対策

【無料プレゼント】

「LaravelでWebアプリをいちから作れるようになりたい!」

そんなLaravel初心者のあなたへ【Laravelの教科書】基礎編プレゼント中!
会員制フォーラムサイトを学習しながら作れます。

詳細はこちらをクリック

【個別サポート実施中】

「本ブログに記載の方法を試してみたけれど、うまくいかない」「コードを見てほしい」という方のために、有償でメールサポートいたします。以下のボタンをクリックして相談フォームにアクセスして下さい。

詳しく見る

Twitter始めました。
スポンサーリンク
40代からプログラミング!

コメント

タイトルとURLをコピーしました