سلام
من برای همه کلید های خارجی onDelete('cascade') گذاشتم ولی کار نمیکنه! خیلی سرچ کردم گفته بودن $table->engine='InnoDB' بزارم که وقتی گذاشتم ارور میگرفت که نمیتونه پرایمری جدول اول رو داخل فیلد کلید خارجی جدول دوم بزاره !
شما احتمالاً دارید از لاراول 5.8 استفاده میکنید توی لاراول 5.8 وقتی که references شما bigIncrements هست حتماً باید کلید خارجیتون هم bigInteger باشه. یعنی باید type این دوتا با هم یکی باشه.
الآن باید type ستون های tashakol_id و f101_id داخل دیتا بیستون bigInteger باشه.
این کار رو بکنید ببینیم مشکل حل میشه یا نه.
اروری نمیده !
فقط و فقط همون مورد رو حذف میکنه ! مواردی که در تیبل های دیگه با کلید خارجی به اون مورد مرتبط شدن رو حذف نمیکنه !
همین
عزیز من خب الآن حداقل کاری که میتونی بکنی اینه که کدهات رو بزاری اینجا تا دوستان جواب شما رو بدن.
خدا وکیلی اگه یکی از خودت یه همچین سوالی با یه همچین اطلاعاتی بپرسه، می تونی جواب بدی؟
این مایگریشن اصلی هست
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');
}
شما احتمالاً دارید از لاراول 5.8 استفاده میکنید توی لاراول 5.8 وقتی که references شما bigIncrements هست حتماً باید کلید خارجیتون هم bigInteger باشه. یعنی باید type این دوتا با هم یکی باشه.
الآن باید type ستون های tashakol_id و f101_id داخل دیتا بیستون bigInteger باشه.
این کار رو بکنید ببینیم مشکل حل میشه یا نه.
ممنونم قبلا همین راه رو بر اساس مستندات لاراول تست کرده بودم جواب نگرفته بودم-ممنون از بذل توجه شما
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟