راکت
حل شده

ایجاد ارتباط بین جدول ها

13 پاسخ
 Illuminate\Database\QueryException  : SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint (SQL: alter table `requests` add constraint `requests_province_id_foreign` foreign key (`province_id`) references `provinces` (`id`))
ثبت پرسش جدید

پاسخ‌ها

13
محمد امیری
محمد امیری
@mohammadeng3731

تخصص: backend coder

بهترین پاسخ

سلام
کلید خارجی با مرجعش هم نوع نیست و province_id باید به صورت unsignedBigInteger باشه

coarad supp
coarad supp
@coaradsupp

تخصص: برنامه نویس لاراول

سلام، کد مایگریشن رو قرار بدین

پوریا رحیمی
پوریا رحیمی
@pouriarahimi

تخصص: طراحی وب سایت

 public function up()
    {
        Schema::create('requests', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->text('title');
            $table->integer('type');
            $table->integer('province_id');
            $table->foreign('province_id')->references('id')->on('provinces');
            $table->integer('city');
            $table->integer('collection');
            $table->integer('category');
            $table->text('info');
            $table->string('user_pic');
            $table->timestamps();
        });
    }

@coaradsupp

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

پوریا رحیمی
پوریا رحیمی
@pouriarahimi

تخصص: طراحی وب سایت

ممنون آقای امیری محبت کردید

@mohammadeng3731

پوریا رحیمی
پوریا رحیمی
@pouriarahimi

تخصص: طراحی وب سایت

این کل migration من هست

 public function up()
    {
        Schema::create('requests', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->text('title');
            $table->integer('type');
            $table->unsignedBigInteger('province_id');
            $table->foreign('province_id')->references('id')->on('provinces');
            $table->unsignedBigInteger('city_id');
            $table->foreign('city_id')->references('id')->on('cities');
            $table->unsignedBigInteger('collection_id');
            $table->foreign('collection_id')->references('id')->on('collections');
            $table->unsignedBigInteger('category_id');
            $table->foreign('category_id')->references('id')->on('categories');
            $table->text('info');
            $table->string('user_pic');
            $table->timestamps();
        });
    }

و این خطایی که دوباره داده

[gomgashteh@cl core]$ php artisan migrate:fresh
PHP Warning:  Module 'mcrypt' already loaded in Unknown on line 0
Dropped all tables successfully.
Migration table created successfully.
Migrating: 2020_07_15_060119_create_admins_table
Migrated:  2020_07_15_060119_create_admins_table
Migrating: 2020_07_15_064544_create_verify_codes_table
Migrated:  2020_07_15_064544_create_verify_codes_table
Migrating: 2020_07_20_073139_create_logs_logins_table
Migrated:  2020_07_20_073139_create_logs_logins_table
Migrating: 2020_07_20_073447_create_logs_operations_table
Migrated:  2020_07_20_073447_create_logs_operations_table
Migrating: 2020_07_20_073541_create_users_table
Migrated:  2020_07_20_073541_create_users_table
Migrating: 2020_08_16_102614_create_provinces_table
Migrated:  2020_08_16_102614_create_provinces_table
Migrating: 2020_08_16_102637_create_cities_table
Migrated:  2020_08_16_102637_create_cities_table
Migrating: 2020_08_16_102654_create_requests_table

   Illuminate\Database\QueryException  : SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint (SQL: alter table `requests` add constraint `requests_collection_id_foreign` foreign key (`collection_id`) references `collections` (`id`))

کاریم که آقای امیری گفتن انجام دادم و درست شد واسه جدول province و city واسه بقیش همون کارهاروهم انجام دادم دوباره ارور میده
@mohammadeng3731

محمد امیری
محمد امیری
@mohammadeng3731

تخصص: backend coder

@pouriarahimi
سلام. توجه کن که ابتدا جدول اصلی رو migration اون رو ایجاد کنی بعد جدولی رو که بهش متصل میشه وگرنه سیستم سعی میکنه ابتدا جدولی که کلید خارجی دراون ایجاد کردی رو به id جدول اصلی در حین ایجاد متصل کنه میبینه وجود نداره و خطا میده.امیدوارم متوجه منظورم شده باشی.مثلا در کد بالا ابتدا migration شهر باید ایجاد شده باشه بعد برسی به مایگریشن درخواست ها

پوریا رحیمی
پوریا رحیمی
@pouriarahimi

تخصص: طراحی وب سایت

تشکر تست میکنم اطلاع میدم
@mohammadeng3731

پوریا رحیمی
پوریا رحیمی
@pouriarahimi

تخصص: طراحی وب سایت

مهندس ممنون اون مشکل حل شد
الان یه مشکل دیگه دارم
من توی این فرم وقتی اطلاعاتی توی inputهاش وارد میشه و در آخر دکمه ثبتش رو میزنم
این ارور رو میده توی مرورگر

Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException
The GET method is not supported for this route. Supported methods: POST.

اینم route هست

Route::post('save-req','UsersController@save_re');

اینم فرمشه

 <form action="save-req" method="POST">
        @csrf

من دارم از متد Post استفاده میکنم ولی این داره میگه متد get رو ساپورت نمیکنم
اینم عکس از مرورگر
اینم عکس از مرورگر

@mohammadeng3731

محمد امیری
محمد امیری
@mohammadeng3731

تخصص: backend coder

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

        Route::post('save-req','UsersController@save_re')->name('form.action');

حالا داخل فرمت :

                    <form action="{{route('form.action')}}" method="POST">
پوریا رحیمی
پوریا رحیمی
@pouriarahimi

تخصص: طراحی وب سایت

کارایی که گفتید رو انجام دادم ارور میده

Route::post('save-req','UsersController@save_re')->name('Users.save_re');

اینم فرمش

<form action="{{route('save-req')}}" method="POST">

اینم ارورش

@mohammadeng3731

محمد امیری
محمد امیری
@mohammadeng3731

تخصص: backend coder

برادر از اینجا که من میبینم اسم اکشن فرمت با با اسم مسیرت فرق داره.مشخصه که خطا میده و میگه تعریف نشده.یکم دقت کن

پوریا رحیمی
پوریا رحیمی
@pouriarahimi

تخصص: طراحی وب سایت

این فرم منه

<form action="save-req" method="POST">

اینم route هست

Route::post('save-req','UsersController@save_req');

در فانکشن save-req اینپوت ها رو با request میگیرم و خیلی راحت چاپ میکنم
ولی زمانی که میخوام ولیدیشن ها رو چک کنم و create کنم این ارور رو میده
توضیح تصویر رو وارد کنید

@mohammadeng3731

پوریا رحیمی
پوریا رحیمی
@pouriarahimi

تخصص: طراحی وب سایت

توی کل پروژه دارم از این روش استفاده میکنم و فقط اینجا این ارور رو میده !!!!
@mohammadeng3731

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

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