asani
5 سال پیش توسط asani مطرح شد
5 پاسخ

مشکل cascade

سلام
نمیدونم چرا 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();
        });
    }
```

ثبت پرسش جدید
نوب
تخصص : کدنویس نوب :)
@yk5742g 2 سال پیش مطرح شد
0

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

اول از همه اگر لاراول آخرین نسخه از ویراست 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
تخصص : کارشناس فنی
@ali.asani 5 سال پیش مطرح شد
حسام موسوی
تخصص : طراح و برنامه نویس
@hesammousavi 5 سال پیش مطرح شد
0

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


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

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


محمدحسین دولتی
تخصص : Backend Developer - php
@mohammadh.dolati 2 سال پیش مطرح شد
0

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


نوب
تخصص : کدنویس نوب :)
@yk5742g 2 سال پیش مطرح شد
0

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

اول از همه اگر لاراول آخرین نسخه از ویراست 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();
        });
    }

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

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