Maison >développement back-end >tutoriel php >Exploitation de recherche de texte intégral dans Laravel
Laravel offre de puissantes capacités de recherche en texte intégral via les méthodes whereFullText
et orWhereFullText
, fournissant une approche plus raffinée de la récupération de données que les instructions simples LIKE
.
Les méthodes whereFullText
s'intègrent parfaitement à la fonctionnalité de recherche intégrale intégrée de votre base de données. Un exemple de base suit:
use Illuminate\Support\Facades\DB; $users = DB::table('users') ->whereFullText('bio', 'web developer') ->get();
Cela peut être élargi pour créer des fonctionnalités de recherche robustes pour des applications telles que des blogs ou des systèmes de gestion de contenu. Ce qui suit illustre une recherche sur plusieurs colonnes avec filtrage de catégorie:
// ArticleController.php public function search(Request $request) { return Article::query() ->whereFullText(['title', 'content'], $request->search) ->when($request->category, function ($query, $category) { $query->where('category', $category); }) ->orderBy('published_at', 'desc') ->paginate(15); } // migration Schema::create('articles', function (Blueprint $table) { $table->id(); $table->string('title'); $table->text('content'); $table->string('category'); $table->timestamp('published_at'); $table->fullText(['title', 'content']); });
Laravel génère automatiquement le SQL correct pour votre base de données. Pour MariaDB et MySQL, il est par défaut des instructions MATCH AGAINST
utilisant le mode de langage naturel.
Cette approche rationalise la logique de recherche complexe tout en maintenant des vitesses de requête efficaces pour des projets de taille modéré. Cependant, pour les applications exigeant une recherche avancée ou une gestion des ensembles de données substantiels, des moteurs de recherche dédiés tels que Elasticsearch ou MeiliSearch sont recommandés.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!