create many to many polymorphic relation

This commit is contained in:
2024-12-25 14:17:27 +03:30
parent 6d9848cbc9
commit b14d75105d
3 changed files with 64 additions and 4 deletions

View File

@@ -4,6 +4,7 @@ namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Relations\HasOne; use Illuminate\Database\Eloquent\Relations\HasOne;
use Illuminate\Database\Eloquent\Relations\MorphToMany;
use Illuminate\Http\UploadedFile; use Illuminate\Http\UploadedFile;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsToMany; use Illuminate\Database\Eloquent\Relations\BelongsToMany;
@@ -167,17 +168,18 @@ class RoadItemsProject extends Model
} }
} }
public function cmmsMachines(): BelongsToMany public function cmmsMachines(): MorphToMany
{ {
return $this->belongsToMany(CMMSMachine::class, return $this->morphToMany(CMMSMachine::class,
'machinable',
'cmms_machine_road_items_project', 'cmms_machine_road_items_project',
'road_items_project_id', 'road_items_project_id',
'machine_id' 'machine_id'
); );
} }
public function rahdaran(): BelongsToMany public function rahdaran(): MorphToMany
{ {
return $this->belongsToMany(Rahdaran::class,'rahdaran_road_items_project'); return $this->morphToMany(Rahdaran::class, 'rahdarable', 'rahdaran_road_items_project');
} }
} }

View File

@@ -0,0 +1,29 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('machinables', function (Blueprint $table) {
$table->id();
$table->foreignId('machine_id')->constrained('cmms_machines')->noActionOnDelete();
$table->morphs('machinable');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('machinable');
}
};

View File

@@ -0,0 +1,29 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('rahdarables', function (Blueprint $table) {
$table->id();
$table->foreignId('rahdar_id')->constrained('rahdaran')->noActionOnDelete();
$table->morphs('rahdarable');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('rahdarables');
}
};