سلام دوستان خسته نباشید
من وقتی میخوام فرم رو ارسال کنم همچین ارروری بهم میده
SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`siliuser`.`weekly_reports`, CONSTRAINT `weekly_reports_consultant_id_foreign` FOREIGN KEY (`consultant_id`) REFERENCES `consultant_information` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) (SQL: insert into `weekly_reports` (`title`, `body`, `user_id`, `student_id`, `consultant_id`, `updated_at`, `created_at`) values (kjb, <p>lkn</p>, 1, 1, 4, 2020-11-13 08:22:12, 2020-11-13 08:22:12))
ReportController.php [ store ]
$report = new Report();
$report->title = request('title');
$report->body = request('body');
$report->user_id = request('students');
$report->student_id = request('students');
$report->consultant_id = $request->user()->id;
$report->save();
return redirect(route('admin.'));
Migration
Schema::create('weekly_reports', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('title');
$table->text('body');
$table->string('slug')->nullable();
// Relation with 'users' Table
$table->unsignedBigInteger('user_id')->index()->unsigned();
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade')->onUpdate('cascade');
//Relation with 'student_information' Table
$table->unsignedBigInteger('student_id')->index();
$table->foreign('student_id')->references('id')->on('student_information')->onDelete('cascade')->onUpdate('cascade');
//Relation with 'consultant_information' Table
$table->unsignedBigInteger('consultant_id')->index();
$table->foreign('consultant_id')->references('id')->on('consultant_information')->onDelete('cascade')->onUpdate('cascade');
$table->timestamps();
ممنون میشم راهنمایی کنید ❤️❤️
طبق متن ارور، علتش این هست که در زمان ثبت درخواست، در جدول consultant_information تون رکوردی با آیدی 4 ندارید. و چون شما این ستون رو از جنس FK تعریف کردید نمیتونه چنین مقداری براش ثبت کنه.
@mhyeganeh
دستتون درد نکنه
اره دقیقا
اینجا که نوشتم بیشتر که دقت کردم متوجه این موضوع شدم
خییلی ممنون از پاسختون
سلامت باشید
چند تا مورد دیگه هم به نظرم اومد:
اول اینکه نیازی نیست برای ستون هایی که بعدا بعنوان FK تعریف میکنید بصورت جداگانه و دستی index() بگذارید. چون بصورت پیش فرض این اتفاق برای FK ها میافته.
و دوم هم اینکه بهتره در نام گذاری جداولتون بجای student_information و consultant_information از students و consultants استفاده کنید که هم مرسوم تره و هم مشخص تر. به صورت پیش فرض خود لاراول هم برای هر مدل دنبال جدولی میگرده با همون اسم به شکل جمع.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟