Web developer day


Symfony, propel, struktura bazy danych, unikalne kolumny

Opublikowany w Propel, Symfony - autor: morielf na sierpień 5, 2008
Tags: , ,

Przyznam, że nie zupełnie od razu wpadłem na to, w jaki sposób definiuje się unikalne kolumny w schema.yml (schema.yml to plik, w którym definiujemy strukturę bazy w projektach opartych na Propelu / Symfony).

Załóżmy, że mamy tabelę autor:

  autor:
    _attributes:       { phpName: Author }
    id:                ~ #symfony default
    imie:              { type: varchar(255) }
    nazwisko:          { type: varchar(255) }

Chcemy teraz, aby nasza tabela nie zawierała duplikatów, czyli autorów o tym samym imieniu i nazwisku (to tylko przykład, wiem, że to nierozsądne :) ).

W tym celu dodajemy atrybut _uniques a następnie podajemy nazwę klucza autor_unique oraz kolumny imie i nazwisko. W efekcie otrzymujemy taką definicję tabeli:

  autor:
    _attributes:       { phpName: Author }
    id:                ~ #symfony default
    imie:              { type: varchar(255) }
    nazwisko:          { type: varchar(255) }
    _uniques:
      autor_unique:    [imie, nazwisko]