Laravel 5: configuración simple del modelo multiinquilino/multisitio (también se cubre la relación de muchos a muchos)

Ilustración de la barra de navegación de múltiples inquilinos y múltiples sitios de LaravelLaravel 5 es una versión completamente nueva del popular framework. Lamentablemente, todavía no existen buenas configuraciones multiusuario para Laravel 5. Por eso decidí crear también mi propia versión simple, basada en Ámbitos globales elocuentes.

En mi caso, quería una tabla de sitios, con categorías que tuvieran una relación de varios a varios. Así:

sitios
id | nombre

Categorías
id | nombre

categoría del sitio
id | id del sitio | id de la categoría

Por lo tanto, esta estructura de tabla es una relación de varios a varios. Con esta configuración, puede crear una configuración de varios sitios con diferentes categorías. El sitio A tiene las categorías 1 y 2, el sitio B tiene la categoría 3, etc. Se define en el modelo de la siguiente manera:

Aplicación\Sitio.php

perteneceAMuchos('Aplicación\Categoría', 'categoría_sitio'); } }

Y la categoría como:

Aplicación\Categoría.php

perteneceAMuchos('Aplicación\Sitio', 'categoría_sitio'); }

Tenga en cuenta que esta categoría tiene asignada la característica TenantableTrait. Es decir:

Aplicación\Características\TenantableTrait.php

Y por último, no olvidemos el alcance global de Eloquent:

Aplicación\TenantScope.php

whereHas('sites', function($query) use($siteId) { $query->where('sites.id', $siteId); }); } } /** * Eliminar el alcance del generador de consultas Eloquent indicado. * * @param \Illuminate\Database\Eloquent\Builder $builder * @param \Illuminate\Database\Eloquent\Model $model * @return void */ public function remove(Builder $builder, Model $model) { dd('eliminar llamado'); } }

Ahora, si configura el ID del sitio por sesión (por ejemplo) en un controlador con:

Sesión::set('siteId', 1)

Se llamarán todas las categorías que tengan un enlace site_category con site_id=1. Como puede ver, todavía debe especificarse el método remove, por lo que, si desea finalizar este script, déjelo en los comentarios.

Puedes repetir esto con site_products o probablemente incluso con site_category_product (con algunos ajustes, si eso funciona, déjame saber a continuación 🙂).

Hola mundo

Pensamientos de 6 en “Laravel 5: simple multi-tenant/multi-site model setup (many-to-many relation covered as well)”

    1. Hola Rik,

      Hasta donde sé, ese complemento no es compatible con Laravel 5. Si tienes una mejor solución, ¡házmelo saber!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

es_ESEspañol
Ir arriba