Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

127
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!