Laravel 5 : configuration simple d'un modèle multi-locataires/multi-sites (relation plusieurs-à-plusieurs également couverte)

Illustration de la barre de navigation multi-site Laravel multi-locatairesLaravel 5 est une toute nouvelle version du framework populaire. Malheureusement, il n'existe pas encore de bonnes configurations multi-locataires pour Laravel 5. C'est pourquoi j'ai décidé de créer également ma propre version simple, basée sur Des perspectives mondiales éloquentes.

Dans mon cas, je voulais une table de sites, avec des catégories qui ont une relation plusieurs à plusieurs. Donc comme :

sites
identifiant | nom

catégories
identifiant | nom

catégorie_de_site
identifiant | identifiant_site | identifiant_catégorie

Cette structure de table est donc une relation plusieurs à plusieurs. Avec cette configuration, vous pouvez créer une configuration multisite avec différentes catégories. Le site A a les catégories 1 et 2, le site B a la catégorie 3, etc. Elle est définie dans le modèle comme suit :

Application\Site.php

appartient à beaucoup('App\Catégorie', 'catégorie_site'); } }

Et la catégorie comme :

App\Catégorie.php

appartient à plusieurs('App\Site', 'site_category'); }

Notez que cette catégorie possède le trait TenantableTrait. C'est comme ça :

App\Traits\TenantableTrait.php

Et enfin, n'oubliez pas la portée globale d'Eloquent :

Application\TenantScope.php

whereHas('sites', function($query) use($siteId) { $query->where('sites.id', $siteId); }); } } /** * Supprimer la portée du générateur de requêtes Eloquent donné. * * @param \Illuminate\Database\Eloquent\Builder $builder * @param \Illuminate\Database\Eloquent\Model $model * @return void */ public function remove(Builder $builder, Model $model) { dd('remove called'); } }

Maintenant, si vous définissez l'identifiant du site par session (par exemple) dans un contrôleur avec :

Session::set('siteId', 1)

Toutes les catégories qui ont un lien site_category avec site_id=1 seront appelées. Comme vous pouvez le constater, la méthode remove doit encore être spécifiée, donc si vous souhaitez terminer ce script, laissez-le dans les commentaires.

Vous pouvez répéter cela avec site_products ou probablement même site_category_product (avec quelques ajustements, si cela fonctionne, faites-le moi savoir ci-dessous 🙂 ).

Réflexions de 6 sur « Laravel 5: simple multi-tenant/multi-site model setup (many-to-many relation covered as well) »

    1. problèmes de développement

      Salut Rik,

      Pour autant que je sache, ce plugin ne prend pas en charge Laravel 5. Si vous avez une meilleure solution, faites-le moi savoir !

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

fr_FRFrançais
Défiler vers le haut