我是 Laravel 和 php 的新手,所以我遇到了错误,我不知道如何解决。
基本问题是,由于很多表都有 primary:id
和 created_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] CreateItemsTable::up() 声明应与 Illuminate\Database\Migrations\BaseMigration::up(string $tableName) 兼容
是因为我运行了两次 up()
吗?
我错过了什么?感谢您的帮助。
最佳答案
我认为您需要具有相同的函数签名,因此传递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();
});
}
// ......
}
关于php - Laravel 迁移继承不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40069868/