📅  最后修改于: 2023-12-03 15:17:14.861000             🧑  作者: Mango
Laravel 是一个流行的 PHP 框架,其中包含许多强大的功能,其中包括搜索功能。搜索功能可以让用户方便地找到他们所需的信息。在本文中,我们将介绍如何在 Laravel 应用程序中实现搜索功能。
本教程需要以下软件:
为了实现搜索功能,我们需要创建一个数据库,并在该数据库中创建一个表来存储要搜索的数据。可以使用以下命令在 Laravel 中创建数据库:
php artisan make:migration create_articles_table --create=articles
该命令将创建一个新的迁移文件,用于创建一个名为 articles
的表。打开文件并添加以下代码:
public function up()
{
Schema::create('articles', function (Blueprint $table) {
$table->increments('id');
$table->string('title');
$table->text('body');
$table->timestamps();
});
}
public function down()
{
Schema::dropIfExists('articles');
}
该迁移将创建一个 articles
表,其中包含 title
和 body
字段,用于存储文章的标题和内容。
运行以下命令将该迁移应用于数据库:
php artisan migrate
现在,我们已经准备好将搜索功能添加到我们的 Laravel 应用程序中了。我们将使用 Laravel Scout 实现搜索功能。
要使用 Scout,请在 Laravel 项目中运行以下命令:
composer require laravel/scout
然后,运行以下命令发布 Scout 的配置文件和搜索驱动程序:
php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"
最后,添加以下行到 config/app.php
文件的 providers
数组中:
Laravel\Scout\ScoutServiceProvider::class,
Scout 支持多种搜索驱动程序,包括 Algolia、Elasticsearch、Meilisearch 和 TNTSearch。在本教程中,我们将使用 TNTSearch 驱动程序。请在项目中运行以下命令安装 tijsverkoyen/tntsearch:
composer require tijsverkoyen/tntsearch
然后,编辑 config/scout.php
文件,添加以下行:
'tntsearch' => [
'driver' => 'tntsearch',
'storage' => storage_path(),
'prefix' => 'scout',
'fuzziness' => true,
],
最后,运行以下命令来生成 TNTSearch 驱动程序的索引文件:
php artisan scout:import "App\Models\Article"
现在,我们已经完成了 Scout 的配置,我们可以创建一个控制器来处理搜索请求。运行以下命令在 Laravel 项目中创建 SearchController
控制器:
php artisan make:controller SearchController
然后,编辑 SearchController
控制器,添加以下代码:
use App\Models\Article;
use Illuminate\Http\Request;
class SearchController extends Controller
{
public function search(Request $request)
{
$query = $request->input('query');
$articles = Article::search($query)->get();
return view('search', [
'query' => $query,
'articles' => $articles,
]);
}
}
该控制器接收 HTTP 请求和查询,并使用 Scout 搜索文章数据。然后,将搜索结果渲染到 search
视图中。
在我们的 Laravel 应用程序中,我们需要一个表单让用户输入文本查询。以下代码示例演示如何在 Laravel 中创建搜索表单:
<form method="GET" action="{{ route('search') }}">
<input type="text" name="query" placeholder="Search...">
<button type="submit">Search</button>
</form>
将此表单放在 resources/views/search.blade.php
视图中。
在 Laravel 中,我们需要在路由中注册控制器方法。打开 routes/web.php
文件并添加以下行:
Route::get('/search', [SearchController::class, 'search'])->name('search');
现在,我们已经完成了搜索的实现,我们需要更新 search
视图来显示搜索结果。以下代码示例演示如何在 Laravel 中显示搜索结果:
@if ($articles->count() > 0)
@foreach ($articles as $article)
<h2>{{ $article->title }}</h2>
<p>{{ $article->body }}</p>
@endforeach
@else
<p>No articles found</p>
@endif
现在,我们已经成功在 Laravel 项目中实现了搜索功能。
本文介绍了在 Laravel 应用程序中实现搜索功能的步骤。这将有助于用户在内容中查找他们所需的信息。使用 Scout 和 TNTSearch 驱动程序,开发者可以使用 Laravel 框架快速实现高效的搜索功能。