【发布时间】:2021-05-24 07:48:26
【问题描述】:
我尝试迁移具有外键的表。每次我迁移我的表时,它都会产生一个错误,即:
一般错误:1215 无法添加外键约束
这是我的表迁移:
Schema::create('profile_pictures', function (Blueprint $table) {
$table->bigIncrements('id');
$table->bigInteger('user_id')->nullable();
$table->binary('image')->nullable();
$table->timestamps();
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
});
这是我的模型:
class ProfilePicture extends Model
{
protected $fillable = [
'user_id',
'image'
];
public function user()
{
$this->belongsTo(User::class, 'user_id', 'id');
}
}
这是我的用户表迁移:
Schema::create('users', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('username');
$table->string('first_name')->nullable();
$table->string('last_name')->nullable();
$table->string('email')->unique();
$table->string('phone')->nullable();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
【问题讨论】:
-
我们还需要查看
users表的迁移,以检查“id”字段类型 -
我已经放了用户迁移表
-
试试
$table->unsignedBigInteger('user_id')->nullable(); -
错误已经消失但user_id为空
-
user_id 为空是什么意思?迁移只是为了创建数据库表,而不是插入数据。
标签: laravel migration laravel-8