راکت
حل شده

مشکل cascade

5 پاسخ

سلام
نمیدونم چرا onDelete رو cascade گذاشتم کار نمیکنه!

class Tashakol extends Model
{
    public function users()
    {
        return $this->hasMany(User::class , 'tashakol_id');
    }

    public function f۱۰۱()
    {
        return $this->hasMany(F۱۰۱::class , 'tashakol_id');
    }
}

این از مایگریشن f۱۰۱

```
public function up()
    {
        Schema::create('f۱۰۱_s', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->bigInteger('tashakol_id')->unsigned();
            $table->foreign('tashakol_id')->references('id')
                ->on('tashakols')
                ->onDelete('cascade')
                ->onUpdate('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('documentary');
            $table->string('documentaryOfficer');
            $table->string('assessment');
            $table->string('assessmentOfficer');
            $table->integer('status')->default('۰');
            $table->text('comment')->nullable();
            $table->timestamps();
        });
    }
```

این از مایگریشن users

```

public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->bigIncrements('id')->unique();
            $table->string('name');
            $table->string('family');
            $table->string('mobile');
            $table->string('username', ۱۹۱)->unique();
            $table->text('password');
//            $table->text('email')->nullable();
            $table->text('remember_token')->nullable();
            $table->text('pic');
            $table->string('type');
            $table->bigInteger('tashakol_id')->default(۱);
            $table->foreign('tashakol_id')
                ->references('id')
                ->on('tashakols')
                ->onDelete('cascade')
                ->onUpdate('cascade');
            $table->string('daneshjooee')->nullable();
            $table->timestamps();
        });
    }
```
asani
asani
@ali.asani
ثبت پرسش جدید

پاسخ‌ها

5
نوب
نوب
@yk5742g

تخصص: کدنویس نوب :)

بهترین پاسخ

چندین مورد میگم رعایت کنید

اول از همه اگر لاراول آخرین نسخه از ویراست 9 باشه این مشکل کاملا حل شده هست توش

اگر آخرین نسخه از ویراست 9 نیستین موارد زیر کمکتون میکنه
اول از همه در فایل config/database.php قسمت engine را روی InnoDB ست کنین
اگر مشکل حل نشد به صورت زیر پاک کنید

در مدل مربوطه روابط را به صورت زیر در متد booted بنویسید و وقتی که مثلا کاربر را پاک میکنین تمامی روابطش هم پاک میشه

    protected static function booted()
    {
        static::deleted(function ($user) {
            $user->user_profile()->delete();
            $user->user_bank()->delete();
            $user->place()->delete();
            $user->user_target()->delete();
            $user->infiltrations()->delete();
            $user->comment()->delete();
            $user->security()->delete();
            $user->tickets()->delete();
            $user->comments()->delete();
            $user->orders()->delete();
            $user->wallet()->delete();
            $user->post()->delete();
        });
    }
asani
asani
@ali.asani

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

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

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

سلام از این جهت که میگین کار نمیکنه یعنی چی یعنی ارور دارید یا با حذف کردن یکی از tashakol مواردی که در جداول دیگه بهش رابطه دادید پاک نمیشن ؟

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

asani
asani
@ali.asani

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

مورد دومی که گفتین
جداول دیگه ای که بهش رابطه دارن پاک نمیشن

محمدحسین دولتی
محمدحسین دولتی
@mohammadh.dolati

تخصص: Backend Developer - php

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

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

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