راکت
حل شده

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

3 پاسخ

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

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

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

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

Amir JEY
Amir JEY
@am1rreza
ثبت پرسش جدید

پاسخ‌ها

3
محمدحسن یگانه
محمدحسن یگانه
@mhyeganeh

تخصص: Full-Stack Web Developer Freelancer

بهترین پاسخ

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

Amir JEY
Amir JEY
@am1rreza

تخصص: Back-end Developer

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

محمدحسن یگانه
محمدحسن یگانه
@mhyeganeh

تخصص: Full-Stack Web Developer Freelancer

سلامت باشید

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

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

شاید پاسخ شما همین‌جا باشد

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

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