Maison > cadre php > Laravel > le corps du texte

Développement Laravel : Comment définir des relations polymorphes pour plusieurs modèles ?

PHPz
Libérer: 2023-06-13 19:07:11
original
1204 Les gens l'ont consulté

Grâce à l'expérience réelle du projet, l'auteur a découvert qu'il peut y avoir des exigences similaires en matière d'association de données entre plusieurs modèles, et l'utilisation de relations polymorphes à ce stade peut grandement faciliter la gestion et la maintenance des données. Ainsi, cet article présentera en détail comment définir des relations polymorphes pour plusieurs modèles, en prenant le framework Laravel comme exemple.

1. Que sont les relations polymorphes ?

Avant d'introduire la définition des Relations Polymorphes, vous devez d'abord comprendre son concept. Les relations polymorphes sont un type de relation dans le framework Laravel qui est utilisé pour définir des relations entre un modèle et plusieurs autres modèles. De cette manière, l’association de données entre plusieurs modèles peut être rendue plus flexible et plus efficace.

2. Définition des relations polymorphes

Dans le framework Laravel, les relations polymorphes peuvent être implémentées en définissant la méthode morph et la méthode morphTo. Les étapes spécifiques sont les suivantes :

  1. Créer un modèle associé

Dans cet article, nous utiliserons les deux termes « commentaires » et « aime" Prenons deux modèles comme exemple pour illustrer. Les deux modèles doivent associer "utilisateur" et "article". Par conséquent, vous devez d’abord créer un modèle pertinent. Ouvrez la fenêtre de ligne de commande, accédez à l'emplacement du dossier et exécutez la commande suivante :

php artisan make:model Action

De cette façon, un fichier nommé It est le fichier modèle d'Action.

  1. Définir des relations polymorphes pour le modèle

Nous devons créer la méthode morph et la méthode morphTo dans le modèle Action pour implémenter l'interaction entre relation à plusieurs modèles.

① Méthode morph :

public function morph()
{
    return $this->morphTo();
}
Copier après la connexion

Cette méthode est utilisée pour spécifier le modèle qui doit être associé, puis utiliser la méthode morphTo pour l'associer. Dans cet exemple, nous devons associer les deux modèles d'utilisateurs et d'articles, que nous devons définir de la manière suivante :

public function actionable()
{
    return $this->morphTo();
}
Copier après la connexion

② Méthode morphTo :

public function morphTo()
{
    return $this->morphTo('actionable');
}
Copier après la connexion

Cette méthode est utilisé pour associer un modèle spécifique. Dans cet exemple, nous devons associer le modèle aux modèles utilisateur et article, et nous devons les définir de la manière suivante :

public function actions()
{
    return $this->morphMany(Action::class, 'actionable');
}
Copier après la connexion

De cette façon, la définition du modèle Action est terminée.

  1. Créer des relations polymorphes pour d'autres modèles

Afin de permettre à d'autres modèles de s'associer au modèle Action, vous devez ajouter la méthode morphMany à d'autres modèles. Dans cet exemple, nous devons ajouter le code suivant :

use IlluminateDatabaseEloquentRelationsMorphMany;

/**
 * 获取该模型的所有“评论”对象.
 */
public function comments(): MorphMany
{
    return $this->morphMany(Action::class, 'actionable');
}

/**
 * 获取该模型的所有“点赞”对象.
 */
public function likes(): MorphMany
{
    return $this->morphMany(Action::class, 'actionable');
}
Copier après la connexion

De cette façon, d'autres modèles sont associés au modèle Action et peuvent volontiers effectuer des opérations sur les données.

3. Résumé

Les relations polymorphes sont une méthode d'association de données efficace dans le framework Laravel, qui peut réduire considérablement la redondance du code et améliorer l'efficacité du fonctionnement du programme. Cet article explique comment définir des relations polymorphes pour plusieurs modèles, dans l'espoir d'aider les lecteurs dans le développement de projets réels.

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal