راکت
حل شده

مشکل با آن دلیت

6 پاسخ

سلام
من برای همه کلید های خارجی onDelete('cascade') گذاشتم ولی کار نمیکنه! خیلی سرچ کردم گفته بودن $table->engine='InnoDB' بزارم که وقتی گذاشتم ارور میگرفت که نمیتونه پرایمری جدول اول رو داخل فیلد کلید خارجی جدول دوم بزاره !

asani
asani
@ali.asani
ثبت پرسش جدید

پاسخ‌ها

6
Saleh330
Saleh330
@saleh.hesfandiari
بهترین پاسخ

شما احتمالاً دارید از لاراول 5.8 استفاده میکنید توی لاراول 5.8 وقتی که references شما bigIncrements هست حتماً باید کلید خارجیتون هم bigInteger باشه. یعنی باید type این دوتا با هم یکی باشه.
الآن باید type ستون های tashakol_id و f101_id داخل دیتا بیستون bigInteger باشه.
این کار رو بکنید ببینیم مشکل حل میشه یا نه.

حسام موسوی
حسام موسوی
@hesammousavi

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

سلام دوست عزیز کار میکنه که نداریم
ارورتون رو بفرمایید تا بتونیم متوجه بشیم مشکل چیه

asani
asani
@ali.asani

تخصص: کارشناس فنی

اروری نمیده !
فقط و فقط همون مورد رو حذف میکنه ! مواردی که در تیبل های دیگه با کلید خارجی به اون مورد مرتبط شدن رو حذف نمیکنه !
همین

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

Saleh330
Saleh330
@saleh.hesfandiari

عزیز من خب الآن حداقل کاری که میتونی بکنی اینه که کدهات رو بزاری اینجا تا دوستان جواب شما رو بدن.
خدا وکیلی اگه یکی از خودت یه همچین سوالی با یه همچین اطلاعاتی بپرسه، می تونی جواب بدی؟

asani
asani
@ali.asani

تخصص: کارشناس فنی

این مایگریشن اصلی هست

Schema::create('f101_s',
            $table->bigIncrements('id');
            $table->integer('tashakol_id');
            $table->foreign('tashakol_id')->references('id')->on('tashakols')->onDelete('cascade');
            $table->string('subject');
            $table->string('title');
            $table->string('target');
            $table->string('necessity');
            $table->string('audience');
            $table->string('colleague');
            $table->string('date');
            $table->integer('from');
            $table->integer('to');
            $table->integer('term');
            $table->text('preRun');
            $table->text('duringRun');
            $table->text('laterRun');
            $table->text('manPower');
            $table->string('documentaryOfficer');
            $table->string('assessment');
            $table->string('assessmentOfficer');
            $table->integer('status')->default('0');
            $table->text('comment')->nullable();
            $table->timestamps();
        });

این یکی از مایگریشن هایی هست که با کلید خارجی به جدول بالایی ارتباط داره:

Schema::create('costlies', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('title');
            $table->integer('number');
            $table->string('unit_price');
            $table->string('credit');
            $table->string('place');
            $table->integer('f101_id');
            $table->foreign('f101_id')->references('id')->on('f101_s')->onDelete('cascade');
            $table->timestamps();
        });

و این هم مدل و روابط اون جدول اصلیه هست:

public function users()
    {
        return $this->hasOne(User::class , 'tashakol_id');
    }

    public function tashakol()
    {
        return $this->belongsTo(Tashakol::class, 'tashakol_id');
    }

    public function free()
    {
        return $this->hasMany(Free::class, 'f101_id');
    }
    public function costly()
    {
        return $this->hasMany(Costly::class, 'f101_id');
    }
    public function ads()
    {
        return $this->hasMany(Ads::class, 'f101_id');
    }

@saleh.hesfandiari
@hesammousavi

asani
asani
@ali.asani

تخصص: کارشناس فنی

ممنونم قبلا همین راه رو بر اساس مستندات لاراول تست کرده بودم جواب نگرفته بودم-ممنون از بذل توجه شما

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

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