سلام
من برای همه کلید های خارجی 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');
}