2016-10-16 5 views
1

Ich bin neu bei Laravel und PHP, so dass ich Gesicht und Fehler Ich weiß nicht, wie zu lösen.Laravel Migration Vererbung funktioniert nicht

Das grundlegende Problem ist, da viele Tabellen primary:id und created_by,updated_by Spalten haben, was ich herausgefunden habe, erbt sie in meinen Migrationen.

Ich verwende php7

So habe ich eine Basisklasse

class BaseMigration extends Migration { 

    public function up(string $tableName) { 
    Schema::create($tableName, function (Blueprint $table) { 
     $table->mediumIncrements('id'); 
     $table->primary('id'); 

     $table->unsignedMediumInteger('created_by')->references('id')->on('users'); 
     $table->unsignedMediumInteger('updated_by')->references('id')->on('users'); 
    }); 
    } 
} 

und den sich ausdehnenden Migration

class CreateItemsTable extends BaseMigration { 

    public function up() { 
     parent::up('items'); 

     Schema::create('items', function (Blueprint $table) { 

      $table->string('name', 74); 
      $table->timestamps(); 
     }); 
    } 

    // ...... 
} 

jedoch php artisan migrate gibt mir dies:

[ErrorException] Declaration of CreateItemsTable::up() should be compatible with Illuminate\Database\Migrations\BaseMigration::up(string $tableName)

Ist es, weil ich Doppel up() laufen lasse?

Was fehlt mir? Schätze deine freundliche Hilfe.

Antwort

2

Ich glaube, Sie brauchen die gleiche Funktion Signatur haben, so passieren string $tableName:

class CreateItemsTable extends BaseMigration { 

    public function up(string $tableName) { 
     Schema::create('items', function (Blueprint $table) { 
      parent::up('items'); 

      $table->string('name', 74); 
      $table->timestamps(); 
     }); 
    } 

    // ...... 
}