Laravel迁移继承不起作用

时间:2016-10-16 11:45:52

标签: php database laravel migration php-7

我是Laravel和php的新手所以我面对并且错误我不知道如何解决。

基本问题是,由于很多表格都有primary:idcreated_by,updated_by列,因此我发现在我的迁移中继承它们。

我正在使用php7

所以我有一个基类

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');
    });
  }
}

和扩展迁移

class CreateItemsTable extends BaseMigration {

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

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

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

    // ......
}

然而php artisan migrate给了我这个:

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

是因为我正在运行双up()

我错过了什么?感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

我认为您需要具有相同的功能签名,因此请传递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();
        });
    }

    // ......
}