Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

126
Vistas
Compruebe si existe migración en el proveedor de servicios de paquetes de Laravel

Estoy escribiendo un paquete de Laravel, en su proveedor de servicios, el paquete recibe una lista de migraciones para publicar, usando el siguiente código:

 protected function publishMigrations(array $publishables): void { // Generate a list of migrations that have not been published yet. $migrations = []; foreach($publishables as $publishable) { // Migration already exists, continuing if(class_exists($publishable)){ continue; } $file = Str::snake($publishable) . '.php'; $migrations[self::MIGRATIONS_PATH . $file . '.stub'] = database_path('migrations/'.date('Y_m_d_His', time())."_$file"); } $this->publishes($migrations, 'migrations'); }

Un ejemplo de los $publishables del paquete sería:

 $publishables = ['CreateAuthenticationsTable', 'CreateCustomersTable', 'CreateTransactionsTable'];

El código funciona como se esperaba, publicando las migraciones que tengo la intención de publicar, sin embargo, estoy tratando de evitar publicar la misma migración dos veces usando la class_exists($publishable) . Según entendí, Laravel MediaLibrary está utilizando el mismo enfoque. Pero supongo que las migraciones no se cargan al publicar activos porque ese fragmento de código nunca se ejecuta. (class_exists es falso todo el tiempo)

¿Hay alguna manera de hacer un seguimiento de las migraciones ya publicadas? ¿Se trata de un problema de carga automática?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Esta función migrationExists($mgr) verificará si existe un archivo de migración en la base de database/migrations . Recorrerá los nombres de los archivos de migración y buscará una coincidencia de nombre para el nombre de migración dado.

 protected function publishMigrations() { if (!$this->migrationExists('create_admins_table')) { $this->publishes([ __DIR__ . '/database/migrations/create_admins_table.php.stub' => database_path('migrations/' . date('Y_m_d_His', time()) . '_create_admins_table.php'), // you can add any number of migrations here ], 'migrations'); return; } } protected function migrationExists($mgr) { $path = database_path('migrations/'); $files = scandir($path); $pos = false; foreach ($files as &$value) { $pos = strpos($value, $mgr); if($pos !== false) return true; } return false; }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda