سلام دوستان
من داخل migration کد مربوط به پاک شدن رکورد های مربوط به کلید خارجی رو گذاشتم .. ولی بعد از پاک شدن رکورد اصلی .. رکورد جدول مرتبط پاک نمیشد .
$table->integer('question_id')->unsigned();
$table->foreign('question_id')->references('id')->on('questions')->onDelete('cascade');
تو اینترنت سرچ کردم و به این نکته رسیدم که باید database engine رو برابر InnoDB قرار بدم
$table->engine = 'InnoDB';
ولی بعد اینکه این کار رو انجام دادم دیگه migration مربوط به کلید خارجی کلا اجرا نمیشه و ارور میده .
[Illuminate\Database\QueryException]
SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint (SQL: alter table `answers` add constraint `answer
s_question_id_foreign` foreign key (`question_id`) references `questions` (`id`) on delete cascade)
[PDOException]
SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint
راه حلی بعدی اینه که کد های مربوط به حذف اتوماتیک رکورد ها رو تو مدل مربوطه قرار بدم
protected static function boot() {
parent::boot();
static::deleting(function($question) {
$question->answers()->delete();
});
}
این روش جواب داد .. ولی من همچنان میخوام که این کار توسط خود MySql انجام بشه و داخل migration تعریفش کنم ..
به نظر شما راه حل چیه ؟