راکت
asani
asani
توسط asani مطرح شد
حل
6 پاسخ

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

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


ثبت پرسش جدید
Saleh330
Saleh330
@saleh.hesfandiari7 سال پیشمطرح شد
1

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


حسام موسوی
حسام موسوی
تخصص :طراح و برنامه نویس
@hesammousavi7 سال پیشمطرح شد
1

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


asani
asani
تخصص :کارشناس فنی
@ali.asani7 سال پیشمطرح شد
0

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


Saleh330
Saleh330
@saleh.hesfandiari7 سال پیشمطرح شد
0

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


asani
asani
تخصص :کارشناس فنی
@ali.asani7 سال پیشمطرح شد
0

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

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


Saleh330
Saleh330
@saleh.hesfandiari7 سال پیشمطرح شد
1

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


asani
asani
تخصص :کارشناس فنی
@ali.asani7 سال پیشمطرح شد
0

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


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

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