Varlık Tanımı

Varlık tanımları config/entity_config.yml dosyasında yapılır.

Aşağıda bu dosyanın CoreDB kurulumu ile oluşan versiyonu gösterilmiştir.

users:
  class: Src\Entity\User
  manyToMany:
    roles:
      mergeTable: "users_roles"
      selfKey: "user_id"
      foreignKey: "role_id"
      createIfNotExist: false
roles:
  class: Src\Entity\Role
translations:
  class: Src\Entity\Translation
file:
  class: Src\Entity\File
viewable_queries: 
  class: Src\Entity\ViewableQueries
variables:
  class: Src\Entity\Variable
sidebar:
  class: Src\Entity\Sidebar
  manyToMany:
    roles:
      mergeTable: "sidebar_roles"
      selfKey: "sidebar_id"
      foreignKey: "role_id"
      createIfNotExist: false
navbar:
  class: Src\Entity\Navbar
  manyToMany:
    roles:
      mergeTable: "navbar_roles"
      selfKey: "navbar_id"
      foreignKey: "role_id"
      createIfNotExist: false

Varlık tanımları ile sınıflar arasındaki ilişkiler belirtilebilir. Bu sayede CoreDB bu sınıflar için gerekli olan form ve yapıları hazırlayabilecektir.

Tanımlanan varlıklara ait listeleme ve düzenleme ekranları "Varlıklar" -> <Varlık ismi> altında görüntülenebilir.

Varlık isminin kullanıcı dostu olması için yeni bir çeviri kaydı eklenebilir. Çeviri kaydı eklemek için buraya bakabilirsiniz.

Yukarıdaki tanımda görülebileceği gibi "roles" varlığı Role sınıfına bağlanmıştır.

Ayrıca User ve Role sınıfları arasında çoka çok ilişki (N-N) ilişkinin tanımlandığını görebiliriz.

Burada belirtilen mergeTable tanımı N-N ilişkilerde kullanılan ara tablonun ismini temsil etmektedir.

Bütün oluşturulan tabloların sınıf olarak aktarılmasına gerek yoktur.

mergeTable: Birleşim tablosu
selfKey: Sahip nesneyi referans veren anahtar
foreignKey: Ait nesneyi referans veren anahtar
createIfNotExist: Ait nesne listesinden seçim yapılacak ise "false" (Roller),
bulunmaması durumunda yeni bir terim oluşturulacak ise "true" (Etiket)
 
Tanım şu şekildedir.
 
varlık_ismi:
  class: Baglı olduğu sınıf
  baglantı_ismi:
    baglı_nesne_ismi:
      baglanti_özellikleri