Laravel 5: Einfache Einrichtung eines Multi-Tenant-/Multi-Site-Modells (Viele-zu-viele-Beziehungen ebenfalls abgedeckt)

Laravel Multi-Site-Multi-Tenant-NavigationsleistenillustrationLaravel 5 ist eine brandneue Version des beliebten Frameworks. Leider gibt es noch keine guten Multi-Tenant-Setups für Laravel 5. Deshalb habe ich beschlossen, auch meine eigene einfache Version zu erstellen, basierend auf Eloquente globale Bereiche.

In meinem Fall wollte ich eine Sites-Tabelle mit Kategorien, die eine Viele-zu-viele-Beziehung haben. Also etwa so:

Seiten
Ich würde |

Kategorien
Ich würde |

Site-Kategorie
ID | Site-ID | Kategorie-ID

Diese Tabellenstruktur ist also eine Viele-zu-viele-Beziehung. Mit diesem Setup können Sie ein Multi-Site-Setup mit unterschiedlichen Kategorien erstellen. Site A hat die Kategorien 1 und 2, Site B hat die Kategorie 3 usw. Dies ist im Modell wie folgt definiert:

App\Site.php

gehört zu vielen ('App\Kategorie', 'Site_Kategorie'); } }

Und die Kategorie wie:

App\Category.php

gehört zu vielen ('App\Site', 'Site_Kategorie'); }

Beachten Sie, dass dieser Kategorie das Merkmal TenantableTrait zugewiesen ist. Das ist etwa so:

App\Traits\TenantableTrait.php

Und vergessen Sie schließlich nicht den globalen Eloquent-Bereich:

App\TenantScope.php

whereHas('sites', function($query) use($siteId) { $query->where('sites.id', $siteId); }); } } /** * Entferne den Bereich aus dem angegebenen Eloquent-Abfrage-Generator. * * @param \Illuminate\Database\Eloquent\Builder $builder * @param \Illuminate\Database\Eloquent\Model $model * @return void */ public function remove(Builder $builder, Model $model) { dd('remove called'); } }

Wenn Sie nun die Site-ID beispielsweise nach Sitzung in einem Controller mit folgendem Wert festlegen:

Sitzung::set('siteId', 1)

Es werden alle Kategorien aufgerufen, die einen Site_category-Link mit Site_ID=1 haben. Wie Sie sehen, muss die Remove-Methode noch angegeben werden. Wenn Sie dieses Skript also fertigstellen möchten, hinterlassen Sie es in den Kommentaren.

Sie können dies mit site_products oder wahrscheinlich sogar site_category_product wiederholen (mit etwas Feinabstimmung, wenn das funktioniert, lassen Sie es mich unten wissen 🙂 ).

6-Gedanken zu „Laravel 5: simple multi-tenant/multi-site model setup (many-to-many relation covered as well)“

    1. Hallo Rik,

      Soweit ich weiß, unterstützt dieses Plugin Laravel 5 nicht. Wenn Sie eine bessere Lösung haben, lassen Sie es mich wissen!

Einen Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

de_DEDeutsch
Nach oben blättern