entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Generar tablas automáticamente con MVC en laravel

Hola comunidad en general tengo una enorme duda.
necesito generar automáticamente tablas en una base de datos con laravel, el problema que veo, es que con laravel necesita controladores y modelos y las migraciones así como sus respectivas rutas y no se como hacer que se generen todo eso automáticamente, creo que eso no sera posible, hay alguna otra opción para hacer esto en con laravel 5.1

ejemplo}:::::::::

quiero agregar una nueva empresa y quiero que es empresa tenga sus propias tablas de productos, garantias,mermas,clientes, etc...
al dar de alta esa empresa quiero que se generen todo lo necesario para su funcionamiento.

de antemano muchas gracias por su apoyo, y le agradezco por su tiempo.

1 Respuesta

2votos

Javi2EE Puntos6630

Hola guatemala12, no conozco ese framework por lo que puede que me equivoque pero creo que hay varias formas de abordar el problema y me faltan datos para saber cual sería la mejor en tu caso aun así te comento varios escenarios posibles:

Primer escenario

Si se trata de una misma instancia de tu aplicación, es decir el programa esta en un mismo servidor y distintas empresas acceden a el:

Opcion 1:
La solución mas fácil es que tu programa maneje los datos de las distintas empresas internamente desde la misma base de datos creando relaciones entre los distintos objetos.
Por poner un ejemplo podrías crear una tabla "empresas", en ella guardarías dos registros empresa1 y empresa2, y cada una de las tablas de tu base de datos debería tener una columna "empresa_id" para saber a que empresa pertenecen los productos,clientes,garantias, etc... así un registro tendría los siguientes campos (Id,nombre,descripcion, empresa_id) y sabes en todo momento a cual de las empresas pertenece dicho registro debido al campo empresa_id donde guardas una clave foránea a dicha empresa.

Opcion 2:
Dentro de este mismo escenario en el que todo funciona desde un mismo servidor podrías utilizar algún sistema de gestión dinámica de bases de datos, conocidos en inglés por 'multi-tenant', es una solución que es mas difícil de implementar y mantener y al no conocer mucho de PHP ni laravel no te puedo ayudar mucho, aunque haciendo una pequeña busqueda he encontrado este repositorio de github que podría ser lo que buscas:

Multi-tenant Laravel

Otro escenario posible

Si quisieras duplicar tu aplicación para cada una de las empresas que accede, por ejemplo si estas empresas tienen su propio servidor y vas a instalar una instancia en cada servidor, en cuyo caso tan solo tendrías que hacer un export de tu base de datos marcando la opción de "solo estructura" en tu base de datos y luego importarla para cada nueva instancia del programa.

Espero haberte aclarado algo,

Un saludo

0voto

guatemala12 comentado

hola buenas tarde mi estimado javiEE, muchas gracias por tomarte el tiempo de responder,

mi aplicación estará en un mismo servidor todas las empresas se conectaran a ella, en tu primera solución eso es bueno, pero el problema es que estas tablas serán unos moustros con el paso del tiempo por la cantidad de información, lo cual haría que las consultas sean muy tardadas.

En cambio si cada empresa tienen sus propias tablas las consultas seria mas rápidas. no se planea que cada empresa tenga su instancia si no todas accedan aun mismo servidor.
o me equivoco????

0voto

Javi2EE comentado

No se realmente cual es el tamaño de esas empresas, pero las bases de datos son mas potentes de lo que se suele pensar, si el diseño de las relaciones entre las tablas esta bien realizado y las consultas que se hacen no estan mal formadas las BBDD tiran muy bien. Solo cuando el tamaño de la BBDD se mide en Gigas hay que empezar a preocuparse por eso, en mi experiencia yo he trabajado con tablas que contienen varios millones de registros y van como un tiro siendo el retardo inapreciable.
Hago incapié en que todo este bien diseñado y las consultas esten optimizadas. Si trabajas con algun framework de persistencia de datos medio decente puedes estar tranquilo ya que el 99% de las consultas que hagas estarán bien optimizadas.

Respecto a lo otro yo soy partidario de tenerlo todo en un servidor mientras sea posible.

Un saludo

0voto

Javi2EE comentado

Se me ha olvidado comentarte una cosa, cuando un campo es utilizado por la gran mayoria de consultas es interesante indexar ese campo para todas las tablas dentro de tu gestor de bases de datos, esto hace que esas consultas mas rápidas en tu caso ese campo seria el campo empresa para todas las tablas.

Aqui tienes un poco de informacion

0voto

Javi2EE comentado

Iba a poner un comentario, he tenido un fallo se me ha publicado como respuesta...

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta