我是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] Declaration of CreateItemsTable::up() should be compatible with Illuminate\Database\Migrations\BaseMigration::up(string $tableName)
是因为我正在运行双up()
?
我错过了什么?感谢您的帮助。
答案 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();
});
}
// ......
}