


Développement Laravel : Comment implémenter des associations polymorphes avec Laravel Eloquent ?
Développement Laravel : Comment utiliser Laravel Eloquent pour implémenter des associations polymorphes ?
L'association polymorphe est une fonctionnalité importante de Laravel Eloquent, qui permet à un modèle d'établir des relations avec plusieurs modèles différents. Dans les applications pratiques, le traitement de différents types de données est relativement simple et efficace, notamment dans la conception de bases de données. Dans cet article, nous verrons comment implémenter des associations polymorphes à l'aide de Laravel Eloquent.
1. Qu'est-ce que l'association polymorphe ?
L'association polymorphe fait référence à l'établissement d'une relation d'association entre un modèle et plusieurs modèles différents, qui peut être considérée comme une référence à une catégorie générale. Cela peut apporter de la commodité à de nombreuses applications, telles que :
- Les modèles d'image, audio et vidéo peuvent tous établir des associations polymorphes avec des modèles de commentaires, afin que les commentaires puissent être appliqués à plusieurs types de données.
- Les utilisateurs peuvent établir des associations polymorphes avec des modèles de commentaires et les appliquer à plusieurs types de données, tels que des articles, des images, des vidéos, etc.
- Le modèle de commande peut établir une association polymorphe avec le modèle d'adresse de livraison, de sorte que les commandes puissent être livrées à plusieurs types d'adresses, telles que des domiciles, des entreprises, des points de vente, etc.
2. Méthodes pour implémenter une association polymorphe
Voyons comment utiliser Laravel Eloquent pour implémenter une association polymorphe.
Tout d'abord, nous devons considérer la conception du tableau de données. Nous devons créer une table intermédiaire pour stocker les relations polymorphes entre les modèles. Ce tableau doit contenir les colonnes suivantes :
- id : ID de clé primaire de la table ;
- target_type : nom du type de modèle cible ;
- target_id : ID du modèle cible ;
- source_type : nom du type de modèle source ; ID du modèle.
- Ce qui suit est un exemple de fichier de migration de base de données :
<?php use IlluminateDatabaseMigrationsMigration; use IlluminateDatabaseSchemaBlueprint; use IlluminateSupportFacadesSchema; class CreateCommentsTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('comments', function (Blueprint $table) { $table->id(); $table->morphs('commentable'); $table->text('content'); $table->timestamps(); }); Schema::create('votes', function (Blueprint $table) { $table->id(); $table->unsignedBigInteger('user_id'); $table->unsignedBigInteger('voteable_id'); $table->string('voteable_type'); $table->enum('type', ['up', 'down']); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('comments'); Schema::dropIfExists('votes'); } }
Dans le fichier de migration ci-dessus, nous avons créé deux nouvelles tables : commentaires et votes.
La table des commentaires contient des informations de base sur le modèle de commentaire et la méthode morphs() est utilisée pour implémenter le pointage d'association polymorphe. La table des votes est similaire, utilisant les champs voteable_id et voteable_type pour implémenter une association polymorphe.
Ensuite, nous devons définir la relation d'association dans le modèle Eloquent.
Modèle de commentaire :
<?php namespace AppModels; use IlluminateDatabaseEloquentFactoriesHasFactory; use IlluminateDatabaseEloquentModel; class Comment extends Model { use HasFactory; public function commentable() { return $this->morphTo(); } public function votes() { return $this->morphMany(Vote::class, 'voteable'); } }
Modèle de vote :
<?php namespace AppModels; use IlluminateDatabaseEloquentFactoriesHasFactory; use IlluminateDatabaseEloquentModel; class Vote extends Model { use HasFactory; public function voteable() { return $this->morphTo(); } public function user() { return $this->belongsTo(User::class); } }
Le code ci-dessus définira des relations polymorphes pour le modèle Comment et le modèle Vote respectivement. Dans le modèle Comment, nous utilisons la méthode morphTo() pour définir l'association polymorphe au commentaire, tandis que dans le modèle Vote, nous utilisons la méthode morphMany() pour définir l'association polymorphe au commentaire.
3. Utiliser l'association polymorphe
Voyons comment utiliser l'association polymorphe.
Créez un commentaire :
$article = Article::find(1); $comment = $article->comments()->create([ 'content' => 'This is a comment', ]);
Obtenez des votes pour un commentaire :
$votes = $comment->votes;
Obtenez des commentaires pour un article :
$comments = $article->comments;
Vote :
$comment->votes()->create([ 'user_id' => 1, 'type' => 'up', ]);
L'exemple de code ci-dessus démontre l'utilisation de base des associations polymorphes, que vous pouvez trouver dans le Documentation Laravel Eloquent Plus de détails sur cette fonctionnalité.
Résumé
L'association polymorphe est l'une des fonctionnalités importantes de Laravel Eloquent, qui permet à un modèle d'établir des relations avec plusieurs modèles différents. Très utile dans la conception de bases de données et le développement d'applications. Lorsque vous utilisez Laravel Eloquent pour implémenter des relations polymorphes, vous devez concevoir la table intermédiaire de la relation et définir la relation dans le modèle Eloquent. Nous pouvons utiliser les méthodes morphTo() et morphMany() pour implémenter des relations polymorphes.
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds











Laravelelognent Model Retrieval: Faconttement l'obtention de données de base de données Eloquentorm fournit un moyen concis et facile à comprendre pour faire fonctionner la base de données. Cet article présentera en détail diverses techniques de recherche de modèles éloquentes pour vous aider à obtenir efficacement les données de la base de données. 1. Obtenez tous les enregistrements. Utilisez la méthode All () pour obtenir tous les enregistrements dans la table de base de données: usApp \ Modèles \ Post; $ poters = post :: all (); Cela rendra une collection. Vous pouvez accéder aux données à l'aide de Foreach Loop ou d'autres méthodes de collecte: ForEach ($ PostsAs $ POST) {echo $ post->

Laravel est un cadre PHP pour la création facile des applications Web. Il fournit une gamme de fonctionnalités puissantes, notamment: Installation: Installez le Laravel CLI globalement avec Composer et créez des applications dans le répertoire du projet. Routage: définissez la relation entre l'URL et le gestionnaire dans Routes / web.php. Voir: Créez une vue dans les ressources / vues pour rendre l'interface de l'application. Intégration de la base de données: fournit une intégration prête à l'emploi avec des bases de données telles que MySQL et utilise la migration pour créer et modifier des tables. Modèle et contrôleur: le modèle représente l'entité de la base de données et le contrôleur traite les demandes HTTP.

Lorsque vous développez des sites Web à l'aide de CRAFTCMS, vous rencontrez souvent des problèmes de mise en cache de fichiers de ressources, en particulier lorsque vous mettez fréquemment à mettre à jour les fichiers CSS et JavaScript, les anciennes versions des fichiers peuvent toujours être mises en cache par le navigateur, ce qui fait que les utilisateurs ne voient pas les derniers changements de temps. Ce problème affecte non seulement l'expérience utilisateur, mais augmente également la difficulté du développement et du débogage. Récemment, j'ai rencontré des problèmes similaires dans mon projet, et après une exploration, j'ai trouvé le plugin wiejeben / artist-laravel-mix, qui a parfaitement résolu mon problème de mise en cache.

Laravel fournit un cadre Auth complet pour implémenter les fonctions de connexion des utilisateurs, notamment: définir des modèles d'utilisateurs (modèle éloquent), créant des formulaires de connexion (moteur de modèle de lame), rédaction des contrôleurs de connexion (héritage de l'authentification \ loginContrôleur), vérifiant les demandes de connexion (Auth :: tentative) Redirection après la connexion de la connexion, la limitation de la sécurité). De plus, le cadre Auth fournit également des fonctions telles que la réinitialisation des mots de passe, l'enregistrement et la vérification des e-mails. Pour plus de détails, veuillez consulter la documentation de Laravel: https://laravel.com/doc

Comment Laravel joue-t-il un rôle dans la logique backend? Il simplifie et améliore le développement backend par le biais de systèmes de routage, d'éloquente, d'authentification et d'autorisation, d'événements et d'auditeurs et d'optimisation des performances. 1. Le système de routage permet la définition de la structure d'URL et demande la logique de traitement. 2.Lao-éloquente simplifie l'interaction de la base de données. 3. Le système d'authentification et d'autorisation est pratique pour la gestion des utilisateurs. 4. L'événement et l'écoute implémentent la structure de code couplée de manière lâche. 5. L'optimisation des performances améliore l'efficacité de l'application par la mise en cache et la file d'attente.

Résumé de l'article: Cet article fournit des instructions détaillées étape par étape pour guider les lecteurs sur la façon d'installer facilement le cadre Laravel. Laravel est un puissant cadre PHP qui accélère le processus de développement des applications Web. Ce didacticiel couvre le processus d'installation des exigences du système à la configuration des bases de données et à la configuration du routage. En suivant ces étapes, les lecteurs peuvent jeter rapidement et efficacement une base solide pour leur projet Laravel.

Traiter efficacement 7 millions d'enregistrements et créer des cartes interactives avec la technologie géospatiale. Cet article explore comment traiter efficacement plus de 7 millions d'enregistrements en utilisant Laravel et MySQL et les convertir en visualisations de cartes interactives. Exigences initiales du projet de défi: extraire des informations précieuses en utilisant 7 millions d'enregistrements dans la base de données MySQL. Beaucoup de gens considèrent d'abord les langages de programmation, mais ignorent la base de données elle-même: peut-il répondre aux besoins? La migration des données ou l'ajustement structurel est-il requis? MySQL peut-il résister à une charge de données aussi importante? Analyse préliminaire: les filtres et les propriétés clés doivent être identifiés. Après analyse, il a été constaté que seuls quelques attributs étaient liés à la solution. Nous avons vérifié la faisabilité du filtre et établi certaines restrictions pour optimiser la recherche. Recherche de cartes basée sur la ville

Vous voulez apprendre le cadre de Laravel, mais ne souffrez pas de ressources ni de pression économique? Cet article vous fournit un apprentissage gratuit de Laravel, vous apprenant à utiliser des ressources telles que les plateformes en ligne, les documents et les forums communautaires pour jeter une base solide pour votre parcours de développement PHP de la mise en place de maîtrise.
