Maison > cadre php > Laravel > laravel supprimer povit

laravel supprimer povit

PHPz
Libérer: 2023-05-20 16:35:40
original
719 Les gens l'ont consulté

Laravel est un framework Web PHP populaire qui fournit des fonctionnalités et des outils très pratiques pour rendre le développement Web plus facile et plus rapide. Parmi eux, Pivot est une fonction très importante pour gérer les relations plusieurs-à-plusieurs. Cependant, dans certains cas, nous devrons peut-être supprimer le pivot.

Pourquoi devrais-je supprimer Pivot ?

Pendant le processus de développement, des limitations de Pivot surviennent parfois et nous pouvons avoir besoin de plus de personnalisation et de contrôle de la relation plusieurs-à-plusieurs. À ce stade, la suppression du pivot offre une plus grande flexibilité. Voici quelques situations courantes :

  1. Personnalisez les noms de champs de la table relationnelle
    Pivot générera automatiquement une table intermédiaire contenant deux clés étrangères et un horodatage. Dans certains cas, nous devrons peut-être personnaliser davantage de champs, par exemple en ajoutant un champ de statut. À l'heure actuelle, sans Pivot, nous pouvons créer manuellement une table intermédiaire et personnaliser les noms et types de champs.
  2. Contrôler la création et la mise à jour des tables relationnelles
    Lorsque nous utilisons la fonction Pivot de Laravel, si la table relationnelle n'existe pas, le framework la créera automatiquement. Cependant, dans certains cas, nous devrons peut-être créer cette table manuellement et avoir plus de contrôle lors de la mise à jour des relations. Après avoir supprimé Pivot, nous pouvons écrire manuellement des instructions SQL et contrôler librement la création et la mise à jour des tables relationnelles.
  3. Gestion de relations plusieurs-à-plusieurs complexes
    La fonctionnalité Pivot de Laravel convient généralement aux relations plusieurs-à-plusieurs simples. Cependant, dans certains cas complexes, nous pouvons avoir besoin de plus de personnalisation et de contrôle. Par exemple, nous devons traiter des relations plusieurs-à-plusieurs entre plusieurs tables, ou nous devons ajouter plus de champs à la table de relations pour le traitement. À ce stade, la suppression de Pivot nous permet d'avoir plus de construction et de contrôle selon les besoins.

Comment supprimer Pivot ?

Il existe de nombreuses façons de supprimer Pivot. Voici deux méthodes courantes.

Méthode 1 : Créer manuellement une table intermédiaire

  1. Tout d'abord, créez une table intermédiaire dans la base de données.
CREATE TABLE `user_role` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`user_id` int(11) unsigned NOT NULL,
`role_id` int(11) unsigned NOT NULL,
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
Copier après la connexion
  1. Définir une relation plusieurs-à-plusieurs dans le modèle
class User extends Model
{
public function roles()
{
return $this->belongsToMany(Role::class, 'user_role', 'user_id', 'role_id');
}
}

class Role extends Model
{
public function users()
{
return $this->belongsToMany(User::class, 'user_role', 'role_id', 'user_id');
}
}
Copier après la connexion
  1. Utiliser dans le contrôleur
$user = User::find(1);
$roles = $user->roles;
Copier après la connexion

Méthode 2 : Utiliser un middleware

  1. Créer un middleware
php artisan make:middleware SimplifyPivotMiddleware
Copier après la connexion
  1. Processus dans le middleware Beaucoup -Relations à plusieurs
namespace AppHttpMiddleware;

use Closure;

class SimplifyPivotMiddleware
{
public function handle($request, Closure $next)
{
$user = $request->user;
$roles = $user->roles()->withTimestamps()->select('id', 'name')->get();
$user->setRelation('roles', $roles);
return $next($request);
}
}
Copier après la connexion
  1. Utilisation d'un middleware dans le routage
Route::get('/user/{id}/roles', function ($id) {
$user = User::with('roles')->find($id);
return response()->json(['status' => 1, 'data' => $user->roles]);
})->middleware(SimplifyPivotMiddleware::class);
Copier après la connexion

Conclusion

Pivot est un excellent moyen de gérer les relations plusieurs-à-plusieurs dans Laravel. Cependant, dans certains cas, nous devrons peut-être nous débarrasser du Pivot et créer manuellement des tables intermédiaires, ou utiliser un middleware pour gérer les relations plusieurs-à-plusieurs. Cela offre une plus grande flexibilité et un meilleur contrôle, mais nécessite des coûts de codage et de maintenance plus élevé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!

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