Mikail.Net

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

Nova kullanılabilir ilişkiler

Laravel ve Nova, modern web uygulamaları geliştiren PHP geliştiricileri için güçlü ve popüler araçlardır. Laravel ve Nova Eloquent ORM (Object-Relational Mapping) sistemi sayesinde, veritabanı ilişkilerini yönetmek hiç olmadığı kadar kolay ve esnektir. Bu yazıda, Laravel ve Nova daki kullanılabilir ilişkileri daha iyi anlamanıza yardımcı olacak birkaç temel ilişki türünü inceleyeceğiz.

Bir modelin başka bir modelle ilişkisi olduğunu belirtmek için HasOne, HasMany ve BelongsTo gibi ilişkiler kullanılır. HasOne ve HasMany, bir modelin diğer modellerle ilişkili olduğunu gösterirken, BelongsTo ilişkisi bir modelin başka bir modele ait olduğunu gösterir. Bu ilişkiler, web uygulamanızın veritabanındaki tablolar arasındaki ilişkileri temsil eder.

Laravel ve Nova ayrıca, polimorfik ilişkileri destekler, yani MorphOne, MorphMany ve MorphTo gibi ilişkiler. Bu ilişkiler, bir modelin birden fazla model türüyle ilişkilendirilmesine olanak tanır. Örneğin, bir Görsel modelinin hem Ürün hem de Yazı modelleriyle ilişkilendirilmesi.

İlişkileri yönetirken, “çoktan çoğa” ilişkileri belirtmek için BelongsToMany ve MorphToMany kullanılabilir. Bu ilişkiler, birden çok modelin birbirine bağlı olduğu durumları temsil eder.

Ayrıca, Laravel Nova’da, ilişkili modellerde arama yapmayı sağlayan Searchable Relations, ilişkili modellerin doğrudan ana modelin formunda oluşturulmasını sağlayan Creating Inline Relations ve ilişkili modelin doğrudan ana modelin formunda oluşturulurken kullanılan modalın boyutunu belirleyen Inline Creation Modal Size gibi özellikler mevcuttur.

Laravel ve Nova daki ilişkiler, veritabanı tablolarınız arasında karmaşık bağlantıları yönetmeyi kolaylaştırır. Bu, geliştiricilerin daha hızlı ve etkili bir şekilde çalışmasına ve daha güçlü, ölçeklenebilir web uygulamaları oluşturmasına olanak tanır. Eloquent ORM ve Nova’nın sunduğu bu güçlü ilişki türleriyle, veritabanı ilişkilerinizi yönetmek artık çok daha basit ve sezgisel.

  1. HasOne: Bir modelin başka bir modelle tek bir ilişkisi olduğunu belirtir. Örneğin, bir Kullanıcı modelinin bir Telefon modeliyle ilişkisi olabilir.
  2. HasMany: Bir modelin başka bir modelle birden fazla ilişkisi olduğunu belirtir. Örneğin, bir Kullanıcı modelinin birden çok Yorum modeliyle ilişkisi olabilir.
  3. HasOneOfMany: Bir modelin birden çok ilişkili kayıt arasından en uygun olanı seçmesini sağlar. Örneğin, bir Yazar modelinin yazdığı birden çok Yazı arasından en son yazıyı seçmesi.
  4. HasOneThrough: Bir modelin, başka bir model üzerinden tek bir ilişkili model kaydına eriştiğini belirtir. Örneğin, bir Kullanıcı modelinin, Hesap modeli üzerinden bir Hesap Geçmişi modeline erişmesi.
  5. HasManyThrough: Bir modelin, başka bir model üzerinden birden fazla ilişkili model kaydına eriştiğini belirtir. Örneğin, bir Ülke modelinin, Şehir modeli üzerinden birden çok İş modeline erişmesi.
  6. BelongsTo: Bir modelin başka bir modele ait olduğunu belirtir. Örneğin, bir Yorum modelinin bir Kullanıcı modeline ait olması.
  7. Peeking At BelongsTo Relationships: BelongsTo ilişkisindeki ilişkilendirilmiş modelin özelliklerini görüntülemeyi sağlar.
  8. Preventing Peeking At BelongsTo Relationships: BelongsTo ilişkisindeki ilişkilendirilmiş modelin özelliklerinin görüntülenmesini engeller.
  9. BelongsToMany: Bir modelin başka bir modelle “çoktan çoğa” ilişkide olduğunu belirtir. Örneğin, bir Ürün modelinin birden çok Kategori modeliyle ilişkisi olabilir.
  10. MorphOne: Tek bir modelin birden fazla model türüyle ilişkilendirildiğini belirtir. Örneğin, bir Görsel modelinin Hem Ürün hem de Yazı modelleriyle ilişkilendirilmesi.
  11. MorphOneOfMany: Bir modelin birden çok ilişkili kayıt arasından en uygun olanı seçmesini sağlar ve birden fazla model türüyle ilişkilendirir. Örneğin, bir modelin birden çok Yorum arasından en son yorumu seçmesi ve bu yorumun birden fazla model türüyle ilişkilendirilmesi.
  12. MorphMany: Bir modelin birden fazla model türüyle ilişkilendirildiğini ve bu ilişkide birden fazla kayıt olduğunu belirtir. Örneğin, bir Ürün modelinin birden çok Yorum modeliyle ilişkilendirilmesi ve bu yorumların birden fazla model türü ile ilişkilendirilmesi.
  13. MorphTo: Bir modelin birden fazla model türüne ait olabileceğini belirtir. Örneğin, bir Yorum modelinin hem Ürün hem de Yazı modellerine ait olabileceği gibi.
  14. Peeking At MorphTo Relationships: MorphTo ilişkisindeki ilişkilendirilmiş modelin özelliklerini görüntülemeyi sağlar.
  15. Preventing Peeking At MorphTo Relationships: MorphTo ilişkisindeki ilişkilendirilmiş modelin özelliklerinin görüntülenmesini engeller.
  16. MorphToMany: Bir modelin birden fazla model türüyle “çoktan çoğa” ilişkide olduğunu belirtir. Örneğin, bir Etiket modelinin birden çok Yazı ve Ürün modelleriyle ilişkisi olabilir.
  17. Searchable Relations: İlişkili modellerde arama yapmayı sağlar. Bu, kullanıcının ilişkili modellerde kolayca arama yapmasına ve istediği sonuçları elde etmesine olanak tanır.
  18. Creating Inline Relations: İlişkili modellerin doğrudan ana modelin formunda oluşturulmasını sağlar. Bu, kullanıcının ayrı bir sayfada veya modülde oluşturmak zorunda kalmadan ilişkili modeli hızlı bir şekilde eklemesine olanak tanır.
  19. Inline Creation Modal Size: İlişkili modelin doğrudan ana modelin formunda oluşturulurken kullanılan modalın boyutunu belirler. Bu, kullanıcının modal boyutunu daha küçük veya daha büyük yaparak farklı boyutlarda ekranlarda daha iyi bir deneyim yaşamasını sağlar.