La recherche et la suppression de Laravel sont une exigence de développement très courante, en particulier dans le développement d'applications qui nécessitent des opérations CRUD sur les données, telles que les systèmes de gestion de contenu ou les sites Web de commerce électronique. Laravel, en tant que framework PHP populaire, fournit une multitude d'outils et d'API, rendant ce processus très simple.
1. Laravel Search
La mise en œuvre de la fonction de recherche dans Laravel nécessite généralement les étapes suivantes :
Laravel Scout convient aux applications qui classifient et optimisent les résultats de recherche. Scout est plus rapide que les requêtes de recherche natives. Rapides, les composants de requête sont plus faciles à refactoriser. Laravel Scout utilise Elasticsearch ou Algolia pour effectuer des recherches, ces moteurs de recherche sont très populaires et bénéficient d'un large support communautaire.
Sur la base de l'établissement des fichiers de migration de modèle, de contrôleur et de base de données dans l'application Laravel, nous devons effectuer des opérations de migration de base de données liées à la recherche.
Par exemple, dans la base de données des utilisateurs, nous pouvons ajouter une colonne « consultable » :
Schema::table('users', function (Blueprint $table) { $table->boolean('searchable')->default(false); });
Ici, nous pouvons définir la valeur par défaut false pour consultable, c'est-à-dire que l'utilisateur ne souhaite pas être recherché. Il peut également être configuré pour définir searchable sur true après avoir modifié les informations utilisateur, afin que l'utilisateur puisse être recherché.
Lors de l'utilisation de Laravel Scout, nous devons utiliser le trait Searchable dans le modèle correspondant.
Par exemple :
namespace App ;
utilisez IlluminateDatabaseEloquentModel;
utilisez LaravelScoutSearchable;
class User extends Model
{
use Searchable; // ...
}
Une fois ce processus terminé, les sauvegardes (), les suppressions () et les restaurations du modèle () et forceDelete() se synchroniseront automatiquement avec les moteurs de recherche.
Créez des index et formatez les résultats de recherche dans Algolia ou ElasticSearch. Pour optimiser les résultats de recherche, nous pouvons utiliser le trait Searchable de Scout dans Laravel.
Par exemple, dans Algolia :
namespace App ;
utilisez LaravelScoutSearchable ;
utilisez AlgoliaScoutExtendedSearchableAggregator
class Note extends Model
{
use Searchable, Aggregator; public function toSearchableArray() { $array = $this->toArray(); // 请求注入时,我们需要更新查询升级和向量分配 $array = $this->seoInject Boosts($array, [ 'title' => 1000, 'content' => 100, 'body' => 10, ]); return $array; }
}
2.
dans l'application CRUD de Lara In vel, Les opérations de suppression sont très courantes. La suppression des résultats de recherche est une tâche relativement complexe car vous devez supprimer automatiquement les données supprimées du moteur de recherche. Cela signifie que nous devons exploiter la base de données.
Voici le processus général de recherche et de suppression de données :
1. Sélectionnez les données à supprimer dans les résultats de recherche.
2. Marquez ces données comme « Supprimer », mettez à jour la base de données et supprimez ces données des moteurs de recherche.
supprimé du moteur. Nous verrons ensuite comment mettre en œuvre des suppressions groupées dans les résultats de recherche.
3. Implémenter des opérations de suppression par lots
Avant de supprimer plusieurs résultats, nous devons développer une boîte de sélection multiple et un bouton de suppression sur le front-end. Ensuite, nous devons implémenter l’opération de suppression par lots dans le contrôleur. Cette partie du code comprend :
Récupérer toutes les notes à supprimer.
Par exemple, dans le fichier NoteController.php, implémentez l'opération de suppression par lots :
/** * 删除一条笔记修饰符信息请求 * * @param int $id * @return IlluminateHttpResponse */ public function destroy($id) { $note = Note::find($id); if ($note) { // 从数据库中删除 $note->delete(); // 从搜索引擎中删除 $note->unsearchable(); } return redirect() ->route('notes.index') ->with('success', 'Note deleted successfully.'); }
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!