ACTAS ve ilişkiler doktrin ne demek?

1 Cevap php

Ben tamamen aşağıdaki schema.yml bir kayıp değilim:

JobeetCategory:
  actAs: { Timestampable: ~ }
  columns:
    name: { type: string(255), notnull: true, unique: true }

JobeetJob:
  actAs: { Timestampable: ~ }
  columns:
    category_id:  { type: integer, notnull: true }
    type:         { type: string(255) }
    company:      { type: string(255), notnull: true }
    logo:         { type: string(255) }
    url:          { type: string(255) }
    position:     { type: string(255), notnull: true }
    location:     { type: string(255), notnull: true }
    description:  { type: string(4000), notnull: true }
    how_to_apply: { type: string(4000), notnull: true }
    token:        { type: string(255), notnull: true, unique: true }
    is_public:    { type: boolean, notnull: true, default: 1 }
    is_activated: { type: boolean, notnull: true, default: 0 }
    email:        { type: string(255), notnull: true }
    expires_at:   { type: timestamp, notnull: true }
  relations:
    JobeetCategory: { onDelete: CASCADE, local: category_id, foreign: id, foreignAlias: JobeetJobs } 

JobeetAffiliate:
  actAs: { Timestampable: ~ }
  columns:
    url:       { type: string(255), notnull: true }
    email:     { type: string(255), notnull: true, unique: true }
    token:     { type: string(255), notnull: true }
    is_active: { type: boolean, notnull: true, default: 0 }
  relations:
    JobeetCategories:
      class: JobeetCategory
      refClass: JobeetCategoryAffiliate
      local: affiliate_id
      foreign: category_id
      foreignAlias: JobeetAffiliates

JobeetCategoryAffiliate:
  columns:
    category_id:  { type: integer, primary: true }
    affiliate_id: { type: integer, primary: true }
  relations:
    JobeetCategory:  { onDelete: CASCADE, local: category_id, foreign: id }
    JobeetAffiliate: { onDelete: CASCADE, local: affiliate_id, foreign: id }

Ve nasıl doğru tanımlamak için?

1 Cevap

Kısa ve tatlı:

Adından da anlaşılacağı gibi Behaviors ('ACTAS'), davranışını tanımlamak için bir yol vardır (sp - ;-) üzgünüm, İngiliz) bir model. Ben en çok kullanılan (oluşturulmuş ve güncellenmiş alanları sofranıza ve otomatik olarak bu güncellemeleri ekler) "Timestampable" ve kayıt yerine aslında bir "silinmiş" ise timestamped bir deleted_at sütun ekliyor, "SoftDelete" (vardır derim ) kaydını kaldırarak.

Daha fazla bilgi burada - http://www.doctrine-project.org/documentation/manual/1_2/en/behaviors

Relations - diğer modelleri modelleri ile ilgili. Örneğin bir blog yazısı çok yorum olması muhtemeldir - yazı ve yorumlardan arasında bir-çok ilişkisi. Yukarıdaki Jobeet örnekte, bir İş bir Kategori aittir.

ve tekrar, daha fazla bilgi burada - http://www.doctrine-project.org/documentation/manual/1_2/en/defining-models#relationships

Ama, Marko @ Yukarıda da değindiğimiz gibi, ... hatta tablolar arasındaki ilişkileri açıklamak için bir resim var gelen şema var Symfony docs page :-) belgeler ile başlar -)