aeneas Eğer sadece alt kategoriler yani çocuklar benzersiz olsun diyorsanız $table->unique(['parent_id', 'name']);
ama birinci seviye bir ana kategorinin altında tüm çocuk ve torun kategoriler benzersiz olsun diyorsanız bunu veri tabanı düzeyinde yapmak zor olacağı için validation ile yapmanız lazım; tüm alt kategorileri alıp içinde var mı yok mu diye kontrol edeceksiniz. Elbette bir kategoriyi ait olmadığı başka bir ana kategoriye taşıma yaparsanız bu işlemi tekrarlatmanız gerekecek, gerekirse kategori adı değişecek vs.
Diğer bir yol da benzersizliği slug varsa onunla sağlamak; biri sinema olur diğer sinema-haberleri mesela.