Selamlar, normalde cascade yöntemi kullanıyordum fakat polymorphic tarafına geçince kafam karıştı. Burada cascade yöntemini nasıl kullanırım veya cascade yerine aklıma observer ile takip etmek veya destroy içerisinde detail verisini bulup onuda silmek geldi fakat hangi yol en sağlıklı merak ettiğimden sormak istedim. Örnek olarak bir post silindiğinde seoables tablosundaki postla ilişkili detay satırıda silinmeli, sadece post değil bir çok modelle birden ilişkili.
Migration dosyam:
public function up(): void
{
Schema::create('seoables', function (Blueprint $table) {
$table->id();
$table->unsignedBigInteger('seoable_id');
$table->string('seoable_type');
$table->string('title')->unique()->nullable();
$table->text('description')->nullable();
$table->string('slug')->unique();
$table->boolean('index')->nullable();
$table->index(['seoable_id', 'seoable_type']);
$table->timestamps();
});
}
Bir diğer sorum ise birden fazla modelle ilişkilendirmem gereken yapılarda genel olarak bu yapıyı kullanmaya karar verdim ve projemi buna göre optimize edeceğim. Taggables, Seoables, Commentables, Mediables şeklinde çoğaltmayı düşünüyorum. Sizce doğru bir karar mı?