# PHPのフレームワークLaravelとAlgoliaで開発 その4
昨日に引き続き👇の Live Coding Session - Advanced Search with Laravel and Algolia by Nuno Maduro をやっています。
昨日はLaravel ScoutでAlgoliaに連携してPestでテストをするところまでやりました。
今日はtinkerを使ってコマンドラインでキャッキャするところから。
例えば、SQLiteのProductテーブルからデータの件数を取得したり、Algoliaのproducts indexのデータの件数を取得したり、最初の1件目のデータを取得したり、nihilっていうキーワードで検索してみたり。
$ php artisan tinker
Psy Shell v0.10.4 (PHP 7.4.7 — cli) by Justin Hileman
>>> Product::count();
[!] Aliasing 'Product' to 'App\Product' for this Tinker session.
=> 20
>>> Product::search()->count();
=> 20
>>> Product::search()->first();
=> App\Product {#4096
id: "9",
title: "Dr.",
description: "Voluptatem fugiat quas mollitia nihil ut. Laborum dolore repellat est ea dolor occaecati non. Ut voluptas consequatur eaque dolor ad ipsam quia. Corporis distinctio vitae enim.",
price: "87",
created_at: "2020-07-20 10:17:50",
updated_at: "2020-07-20 10:17:50",
}
>>> Product::search('nihil')->get();
=> Illuminate\Database\Eloquent\Collection {#4097
all: [
App\Product {#4055
id: "16",
title: "Miss",
description: "Nihil cum ducimus voluptas recusandae. Qui et et ut aut quibusdam unde. Est est dolorum dolores voluptas impedit dicta omnis. Ipsum totam reiciendis quis temporibus.",
price: "83",
created_at: "2020-07-20 10:17:50",
updated_at: "2020-07-20 10:17:50",
},
なんというか、実際のクラスにコードを書いてアレやコレやする前に、手元でコマンドラインベースで確かめてから、、っていう開発をRailsの時とかよくやってたので、コレがあるのは便利なんじゃないかな、と。
# Scout Extended
Algolia用に実装が追加されているScout Extendedでは、例えば、scout:flushをすればAlgoliaのインデックスのデータが削除されるし、
$ php artisan scout
Command "scout" is not defined.
Did you mean one of these?
scout:flush
scout:import
scout:make-aggregator
scout:optimize
scout:reimport
scout:status
scout:sync
例えば、optimizeするとscout-products.phpというファイルを生成してくれて、
$ php artisan scout:optimize
🔎 Optimizing search experience in: [App\Product]
[OK] Settings file created at: /Users/eijishinohara/2020july/shop/config/scout-products.php
ここでは検索対象attributeとか
'searchableAttributes' => ['title', 'description', 'price'],
customRankingとかやりくりできちゃう
'customRanking' => ['desc(created_at)', 'desc(updated_at)'],
queryLanguagesはあるけど、indexLanguagesが無いっぽいな…笑 👇このファイルっぽいから、後でギッハブでアレしときますかねぇ〜 https://github.com/algolia/scout-extended/blob/master/resources/views/config.blade.php
そして、statusをみると、、リモートの設定がありませんってことなので、、
$ php artisan scout:status
🔎 Analysing information from: [App\Product]
1/1 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
------------- ---------- ------------------ --------------- ----------------
Searchable Index Settings Local records Remote records
------------- ---------- ------------------ --------------- ----------------
App\Product products Remote not found 20 20
------------- ---------- ------------------ --------------- ----------------
syncしてから、、
$ php artisan scout:sync
🔎 Analysing settings from: [App\Product]
[OK] Remote settings does not exists. Uploading settings file:
/Users/eijishinohara/2020july/shop/config/scout-products.php
もっかい叩くと反映済み、と。
$ php artisan scout:status
🔎 Analysing information from: [App\Product]
1/1 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
------------- ---------- -------------- --------------- ----------------
Searchable Index Settings Local records Remote records
------------- ---------- -------------- --------------- ----------------
App\Product products Synchronized 20 20
------------- ---------- -------------- --------------- ----------------
optimizeで設定ファイルを作って、syncでそれを反映させて、statusで状態を確認できる、と。
狙いとしては、Algliaの設定含めて全部GitHubで管理できる、と。気が利いてる感ありますやね 😃