Création d'une application multi-tenant avec Laravel et Neon

DEV - 10/01
La multi-location est une architecture logicielle dans laquelle une seule instance d'une application sert plusieurs...

La multi-location est une architecture logicielle dans laquelle une seule instance d'une application sert plusieurs locataires ou clients.

Les données de chaque locataire sont isolées et restent invisibles pour les autres locataires. Cette approche est couramment utilisée dans les applications Software as a Service (SaaS). Dans ce didacticiel, nous allons jeter les bases d'une application SaaS multi-tenant utilisant Laravel et Neon.

À la fin de ce didacticiel, vous disposerez d'une application SaaS multi-locataires entièrement fonctionnelle dans laquelle les locataires peuvent gérer leurs propres livres, utilisateurs et paramètres, tout en maintenant l'isolation des données entre les locataires.

Conditions préalables

Avant de commencer, assurez-vous d'avoir les éléments suivants :

  • PHP 8.1 ou supérieur installé sur votre système
  • Composer pour gérer les dépendances PHP
  • Node.js et npm pour la gestion des actifs front-end
  • Un compte Neon pour l'hébergement de bases de données
  • Connaissance de base de Laravel et Livewire

Mise en place du projet

Commençons par créer un nouveau projet Laravel et configurer les composants nécessaires.

Créer un nouveau projet Laravel

Ouvrez votre terminal et exécutez la commande suivante pour créer un nouveau projet Laravel :

composer create-project laravel/laravel laravel-multi-tenant-saas cd laravel-multi-tenant-saas
Entrer en mode plein écran Quitter le mode plein écran

Installation des packages requis

Pour notre application SaaS multi-tenant, nous utiliserons le package suivant :

  • stancl/location: Un package multi-tenant flexible pour Laravel
  • Laravel Breeze : un kit de démarrage d'authentification minimale pour Laravel

Commencez par installer lestancl/locationemballer:

le compositeur a besoin d'un stancl/location
Entrer en mode plein écran Quitter le mode plein écran

Après avoir installé le package, configurons la location :

location php artisan:installer
Entrer en mode plein écran Quitter le mode plein écran

Enregistrez leFournisseur de services de locationdans lebootstrap/providers.phpdéposer:

return [ // ... App\Providers\TenancyServiceProvider::class, ],
Entrer en mode plein écran Quitter le mode plein écran

Installons Laravel Breeze avec les vues Blade :

composer nécessite laravel/breeze --dev php artisanbreeze: installer la lame
Entrer en mode plein écran Quitter le mode plein écran

Ensuite, installez les packages NPM requis :

npm installer npm exécuter le développement
Entrer en mode plein écran Quitter le mode plein écran

Configuration de la base de données

Mettez à jour votre.envfichier avec vos informations d'identification de base de données Neon :

DB_CONNECTION=pgsql DB_HOST=votre-nom d'hôte-neon.neon.tech DB_PORT=5432 DB_DATABASE=votre_nom_de base de données DB_USERNAME=votre_nom d'utilisateur DB_PASSWORD=votre_mot de passe
Entrer en mode plein écran Quitter le mode plein écran

Après avoir mis à jour le.envfichier, exécutez les migrations de base de données :

php artisan migrer
Entrer en mode plein écran Quitter le mode plein écran

Implémentation de la multi-location

Maintenant que nous avons notre configuration de base, implémentons la multilocation dans notre application.

Création du modèle de locataire

Créer unLocatairemodèle:

php artisan make:modèle Locataire
Entrer en mode plein écran Quitter le mode plein écran

Mettre à jour leapp/Modèles/Tenant.phpdéposer:

?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Stancl\Tenancy\Database\Models\Tenant as BaseTenant; use Stancl\Tenancy\Contracts\TenantWithDatabase; use Stancl\Tenancy\Database\Concerns\HasDatabase; use Stancl\Tenancy\Database\Concerns\HasDomains; class Tenant extends BaseTenant implements TenantWithDatabase { use HasFactory, HasDatabase, HasDomains; }
Entrer en mode plein écran Quitter le mode plein écran

Ce modèle étend la baseLocatairemodèle fourni par le package de location et met en œuvre leLocataireAvecDatabaseinterface. Nous avons également défini les attributs à remplir et les colonnes personnali...
[Courte citation de 8% de l'article original]

Loading...