Laravel 5.3で公式拡張パックスカウトを使用したチュートリアルの例では+ Algoliaフルテキスト検索
今日は、私はあなたを与えるだろう、次はでLaravel 5.3でスカウト+ Algoliaを使用して全文検索を実装する方法を示します。
Laravel 5.3多くの新機能を提供してくれますが、また、新しい拡張パックの多くを導入し、今日我々はLaravel 5.3を使用するには、スカウトの拡張パックのモデルベースのフルテキスト検索を提供します。あなたはLaravelで全文検索機能を実装したい場合は、最も簡単な方法は、この拡張パックを使用することです。
このチュートリアルでは、私は自分のアプリケーションで使用するので、より簡単に、その原則と実装のより良い理解につながる、ハンズオンや操作手順が動作することになります。
まず第一に、私たちのプレビューリリースを与えます:
次に、我々はあなたにステップPaodingjieniu再設定し、その実現によってステップを与えたいです。
ステップ1:Laravel 5.3アプリケーションをインストールします。
あなたはLaravel 5.3をインストールしていない場合は、当然のことながら、それをインストールすることで、結局、わらずに作曲のおかげでレンガを作ることができない、インストールプロセスは非常に簡単です、ちょうどウェブルート・ディレクトリで以下のコマンドを実行することができます:
composer create-project --prefer-dist laravel/laravel blog
ステップ2:拡張パックをインストールします。
私たちは、最初にその利益の必要があります。このステップでは、我々は2つの拡張パックをインストールする必要があります:
1)Laravel /スカウト
2)algolia / algoliasearch-クライアントPHP
まず、我々はComposerでスカウトをインストールする必要があり、プロジェクトのルートディレクトリにインストールするには、次のコマンドを実行します。
composer require laravel/scout
インストールが成功した後、設定/ app.php登録サービスプロバイダを開きます。
'providers' => [
....
LaravelScoutScoutServiceProvider::class,
]
次に、我々は次のコマンドで設定ファイルを公開する必要があります。
php artisan vendor:publish --provider="LaravelScoutScoutServiceProvider"
実行が完了した後、あなたはconfigディレクトリにscout.php新しいファイルを見つけます、ファイルはスカウト設定ファイルです。
まあ、我々はalgolia拡張パックをインストールする必要があります。
composer require algolia/algoliasearch-client-php
第三段階:拡張パックの構成
Algolia拡張パッケージをインストールした後、アルゴルIDと秘密を設定。これがない場合は、登録するには、対応するAlgolia.comに関する情報を取得するためにアカウントを持っているために私たちを必要とします。
次のように、このアプリケーションのリンク、ウェブインタフェースと位置情報を介して秘密情報を取得する登録およびログインIDの後に上記.env設定ファイルにセットID及び秘密情報:
ALGOLIA_APP_ID=paste app id
ALGOLIA_SECRET=paste app secret
ステップ4:データテーブルとモデルを作成します。
上記の準備を行った後、我々はアイテムのための移行テーブルを作成することにより、Laravel職人コマンドを提供する必要があります。
php artisan make:migration create_items_table
このコマンドを実行したら、ファイルを編集し、データベース/マイグレーションディレクトリに新しく生成されたファイルの移行が表示されます、次のように読み取ります。
use IlluminateSupportFacadesSchema;
use IlluminateDatabaseSchemaBlueprint;
use IlluminateDatabaseMigrationsMigration;
class CreateItemsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('items', function (Blueprint $table) {
$table->increments('id');
$table->string('title');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop("items");
}
}
アイテムテーブルを作成した後だけでなく、テーブルの対応するモデルクラスを作成します。私たちは、appディレクトリにItem.phpファイルを作成し、次のようにその内容を編集します。
<?php
namespace App;
use IlluminateDatabaseEloquentModel;
use LaravelScoutSearchable;
class Item extends Model
{
use Searchable;
public $fillable = ['title'];
/**
* 获取模型的索引名称
*
* @return string
*/
public function searchableAs()
{
return 'items_index';
}
}
ステップ5:新しいルートを追加
このステップでは、ルートのリストに新しい項目を追加する必要があります。私たちは、ルート/ web.phpファイルに次のルートを追加します。
Route::get('items-lists', ['as'=>'items-lists','uses'=>'ItemSearchController@index']);
Route::post('create-item', ['as'=>'create-item','uses'=>'ItemSearchController@create']);
ステップ6:コントローラーを作成します。
上記の操作の後、我々は、アプリ/ HTTP /コントローラ/ ItemSearchController.php定義されたコントローラ、アイテムのリストを管理するためのコントローラと新しい項目をルーティングし、応答を返す作成します。したがって、我々は次のようにファイルコントローラの読み取り、編集します:
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use AppHttpRequests;
use AppItem;
class ItemSearchController extends Controller
{
/**
* items列表
*/
public function index(Request $request)
{
if($request->has('titlesearch')){
$items = Item::search($request->titlesearch)
->paginate(6);
}else{
$items = Item::paginate(6);
}
return view('item-search'大专栏 indiemaple's blog">,compact('items'));
}
/**
* 创建新的item
*/
public function create(Request $request)
{
$this->validate($request,['title'=>'required']);
$items = Item::create($request->all());
return back();
}
}
ステップ7:ビューを作成します。
最後のステップは、次のようにのは、編集ビューファイルのコードは、ビューファイルリソース/ビュー/アイテムsearch.blade.phpで作成してみましょう:
<!DOCTYPE html>
<html>
<head>
<title>Laravel 5.3 - laravel scout algolia search example</title>
<link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
</head>
<body>
<div class="container">
<h2>Laravel Full Text Search using Scout and algolia</h2><br/>
<form method="POST" action="" autocomplete="off">
@if(count($errors))
<div class="alert alert-danger">
<strong>Whoops!</strong> There were some problems with your input.
<br/>
<ul>
@foreach($errors->all() as $error)
<li></li>
@endforeach
</ul>
</div>
@endif
<input type="hidden" name="_token" value="">
<div class="row">
<div class="col-md-6">
<div class="form-group ">
<input type="text" id="title" name="title" class="form-control" placeholder="Enter Title" value="">
<span class="text-danger"></span>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<button class="btn btn-success">Create New Item</button>
</div>
</div>
</div>
</form>
<div class="panel panel-primary">
<div class="panel-heading">Item management</div>
<div class="panel-body">
<form method="GET" action="">
<div class="row">
<div class="col-md-6">
<div class="form-group">
<input type="text" name="titlesearch" class="form-control" placeholder="Enter Title For Search" value="">
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<button class="btn btn-success">Search</button>
</div>
</div>
</div>
</form>
<table class="table table-bordered">
<thead>
<th>Id</th>
<th>Title</th>
<th>Creation Date</th>
<th>Updated Date</th>
</thead>
<tbody>
@if($items->count())
@foreach($items as $key => $item)
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
@endforeach
@else
<tr>
<td colspan="4">There are no data.</td>
</tr>
@endif
</tbody>
</table>
</div>
</div>
</div>
</body>
</html>
OK、今私たちは上記のコードの効果を確認することができ、最初のプロジェクトのルートディレクトリに建てPHPサーバを起動します。
php artisan serve
次に、ブラウザ内の項目リストページにアクセスします。
http://localhost:8000/items-lists
あなたは、データテーブルを記録するための項目を追加した場合は、インデックスにデータを追加するには、次のコマンドを実行することができます:
php artisan scout:import "AppItem"
これは、ページ内の検索操作することができます。
より多くのスカウト拡張パックの使用方法の詳細については、対応する中国のドキュメントを参照します。http://laravelacademy.org/post/6277.html
免責事項:この記事は仕上げから翻訳されitsolutionstuff.com