Я написал миграции, и они работали хорошо, пока я не попытался сделать их on delete cascade
Я добавил $table->engine = 'InnoDB'
, и это было нормально. но в сеялках, когда я попытался запустить их, я получил ошибку
PDOException::("SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`mohajerat`.`comments`, CONSTRAINT `comments_comment_id_foreign` FOREIGN KEY (`comment_id`) REFERENCES `comments` (`id`) ON
DELETE CASCADE)")
Я знаю, что есть некоторые вопросы в stackoverflow, но ни один из них не помог мне. Поэтому я спросил здесь, чтобы кто-нибудь мог помочь, это моя миграция:
Schema::create('comments', function (Blueprint $table) {
$table->id();
$table->engine = 'InnoDB';
$table->morphs('commentable');
$table->string('body', 250);
$table->foreignId('user_id')->constrained('users')->onDelete('cascade');
$table->foreignId('comment_id')->constrained('comments')->onDelete('cascade');
$table->timestamps();
});
, и это моя сеялка:
Schema::disableForeignKeyConstraints();
Comment::truncate();
Schema::enableForeignKeyConstraints();
$users = \App\Models\User::all()->toArray();
foreach ($users as $key => $user) {
// $comment = \App\Models\Comment::all()->random();
$post = \App\Models\Article::all()->random();
// dd($user, $post);
factory(Comment::class)->create([
'user_id' => $user['id'],
'commentable_id' => $post->id,
'commentable_type' => get_class($post),
'comment_id' => 0
]);
}
пожалуйста, скажите мне, если вы знаете. спасибо!