SyMfonAK - vyvíjame databázy pomocou frameworku Symfony

Vzťahy tabuliek v schéme

Z SyMfonAK
Prejsť na: navigácia, hľadanie
  • príklad na vzťah 1:1 one to one (one-to-one relation)

na strane "druhej" tabuľky v sekcii relations definujeme vzťah k "prvej" type:one a foreignType: one, pričom foreignAlias nazveme tak, aby vyjadroval vzťah v prvej že má práve jeden rozširujúci záznam v tej druhej


# prvý príklad rozširujúci druhový záznam o položky, ktoré je škoda dávať do schémy, lebo by zbytočne nabobtnala o málokedy vyplnené položky
# tabuľka pecbm rozširuje tabuľku zoology_lkpzoospecies 

# prvá tabuľka
ZoologyLkpzoospecies:  
    tableName: zoology_lkpzoospecies
    actAs: [Timestampable]
    columns:
      id:
        type: integer(4)
        primary: true
        autoincrement: true
      zoology_id:
        type: integer(4)
        notnull: true
      lkpzoospecies_id:
        type: integer(4)
        notnull: true
#..atď v jej sekcii ''relations'' nedefinujeme pecbm tabuľku ale vzťah definujeme na strane pecbm


# druhá tabuľka pecbm, pripravíme si tiež položku pre id z prvej tabuľky, tu v ''zoology_lkpzoospecies_id''
Pecbm:
    tableName: pecbm
    actAs: [Timestampable]
    columns:
      id:
        type: integer(4)
        primary: true
        autoincrement: true
      zoology_lkpzoospecies_id:
        type: integer(4)
        notnull: true
      pecbm_count100:
        type: integer(3)
        unsigned: 1
#..atď
# tu definujeme vzťah one-to-one
 relations:
      ZoologyLkpzoospecies:
        local: zoology_lkpzoospecies_id
        foreign: id
        type: one
        foreignType: one
        onDelete: cascade





# druhý príklad profilová rozširujúca užívateľovi položky
# tbl. profilova vztah 1 <-> 1 s tbl. sf_guard_user
  sfGuardUserProfile:
    tableName: userprofile
...

  relations:
      sfGuardUser:
        class: sfGuardUser
        local: sf_guard_user_id
        foreign: id
        type: one
        foreignType: one
        onDelete: cascade
        foreignAlias: Profile


V prvom príklade bude vygenerovaný takýto objekt prvej tabuľky:

 * @method Pecbm                getPecbm()               Returns the current record's "Pecbm" value

# čo zabezpečí tento kus kódu vygenerovaný automaticky podľa schémy:
    public function setUp()
    {
        parent::setUp();

        $this->hasOne('Pecbm', array(
             'local' => 'id',
             'foreign' => 'zoology_lkpzoospecies_id'));

# atď


A takýto objekt druhej tabuľky:


* @method ZoologyLkpzoospecies getZoologyLkpzoospecies()     Returns the current record "ZoologyLkpzoospecies" value
# čo zabezpečí tento kúsok kódu vo funkcii setUp()
    public function setUp()
    {
        parent::setUp();
        $this->hasOne('ZoologyLkpzoospecies', array(
             'local' => 'zoology_lkpzoospecies_id',
             'foreign' => 'id',
             'onDelete' => 'cascade'));
#..