Mikail.Net

Yazılımcı günlüğü

MorphTo

Nova projemizde tüm modeller içerisinde yer alan kayıtlar için yorum yapılabilen bir model ve kaynak (resource) oluşturacağız. Bu amaçla, Laravel Nova’nın MorphTo ilişkisini kullanacağız. MorphTo ilişkisi, polimorfik bir yapı sağlayarak birden fazla model türünün aynı modelle ilişkilendirilmesine imkan tanır.

php artisan make:model Comment -m

migration :

public function up(): void
    {
        Schema::create('comments', function (Blueprint $table) {
            $table->id();
            $table->text('content');
            $table->unsignedBigInteger('commentable_id');
            $table->string('commentable_type');
            $table->timestamps();
        });
    }

model :

public function commentable()
    {
        return $this->morphTo();
    }

resource :

public function fields(NovaRequest $request)
    {
        return [
            ID::make()->sortable(),

            Text::make('Content')
                ->sortable()
                ->rules('required'),

            MorphTo::make('Commentable')
                ->types([
                    User::class,
                    Product::class,
                    Customer::class,
                    // buraya projede yer alan diğer modeller eklenebilir.
                ])
                ->rules('required'),
        ];
    }