Amir JEY
3 سال پیش توسط Amir JEY مطرح شد
3 پاسخ

مشکل در store کردن فرم

سلام دوستان خسته نباشید

من وقتی میخوام فرم رو ارسال کنم همچین ارروری بهم میده

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();

ممنون میشم راهنمایی کنید ❤️❤️


ثبت پرسش جدید
محمدحسن یگانه
تخصص : Full-Stack Web Developer Freel...
@mhyeganeh 3 سال پیش مطرح شد
0

طبق متن ارور، علتش این هست که در زمان ثبت درخواست، در جدول consultant_information تون رکوردی با آیدی 4 ندارید. و چون شما این ستون رو از جنس FK تعریف کردید نمی‌تونه چنین مقداری براش ثبت کنه.


Amir JEY
تخصص : Back-end Developer
@am1rreza 3 سال پیش مطرح شد
0

@mhyeganeh
دستتون درد نکنه
اره دقیقا
اینجا که نوشتم بیشتر که دقت کردم متوجه این موضوع شدم
خییلی ممنون از پاسختون


محمدحسن یگانه
تخصص : Full-Stack Web Developer Freel...
@mhyeganeh 3 سال پیش مطرح شد
0

سلامت باشید

چند تا مورد دیگه هم به نظرم اومد:
اول اینکه نیازی نیست برای ستون هایی که بعدا بعنوان FK تعریف می‌کنید بصورت جداگانه و دستی index() بگذارید. چون بصورت پیش فرض این اتفاق برای FK ها می‌افته.

و دوم هم اینکه بهتره در نام گذاری جداولتون بجای student_information و consultant_information از students و consultants استفاده کنید که هم مرسوم تره و هم مشخص تر. به صورت پیش فرض خود لاراول هم برای هر مدل دنبال جدولی میگرده با همون اسم به شکل جمع.


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام