.: HosiriS :.

Informatica e non solo

G.Li.Ar: il modello

Posted by hosiris su aprile 28, 2010

Avendo definito le specifiche, passiamo all’analisi del modello. Tratterò libri ed articoli in tabelle separate cercando di ottimizzare il trattamento dei dati.
Creiamo il progetto:


$ mkdir -p gliar/lib/vendor
$ cp symfony.tar.gz gliar/lib/vendor
$ cd gliar/lib/vendor
$ tar xvzf symfony.tar.gz
$ cd ../..
$ php lib/vendor/symfony/data/bin/symfony generate:project gliar --orm=Propel

Lo schema del DB è il seguente:

Per la realizzazione dello schema ho usato DIA.
Da questo schema deriva la configurazione che va inserita nel file config/schema.yml:


propel:
  editori:
    id: ~
    nome: { type: varchar(255), required: true }
  riviste:
    id: ~
    nome: { type: varchar(255), required: true }
    id_editore: { type: integer, foreignTable: editori, foreignReference: id }
  categorie:
    id: ~
    nome: { type: varchar(255), required: true }
    descrizione: { type: longvarchar }
  autori:
    id: ~
    nome: { type: varchar(255), required: true }
    cognome: { type: varchar(255), required: true }
    data_nascita: { type: date }
    data_decesso: { type: date }
    luogo_nascita: { type: varchar(255) }
  libri:
    id: ~
    titolo: { type: varchar(255), required: true }
    descrizione: { type: longvarchar }
    indice: { type: longvarchar }
    numero_pagine: { type: integer }
    data: { type: date }
    prezzo: { type: double }
    ISBN: { type: varchar(50) }
    id_editore: { type: integer, foreignTable: editori, foreignReference: id }
  articoli:
    id: ~
    titolo: { type: varchar(255), required: true }
    sommario: { type: longvarchar }
    pagina_inizio: { type: integer }
    numero_pagine: { type: integer }
    data: { type: date }
    id_rivista: { type: integer, foreignTable: riviste, foreignReference: id }
  autori_libri:
    id_autore: { type: integer, foreignTable: autori, foreignReference: id }
    id_libro: { type: integer, foreignTable: libri, foreignReference: id }
  autori_articoli:
    id_autore: { type: integer, foreignTable: autori, foreignReference: id }
    id_articolo: { type: integer, foreignTable: articoli, foreignReference: id }
  categorie_libri:
    id_categoria: { type: integer, foreignTable: autori, foreignReference: id }
    id_libro: { type: integer, foreignTable: libri, foreignReference: id }
  categorie_articoli:
    id_categoria: { type: integer, foreignTable: autori, foreignReference: id }
    id_articolo: { type: integer, foreignTable: articoli, foreignReference: id }

Adesso creiamo l’applicazione e generiamo le classi del modello:


$ ./symfony generate:app frontend
$ mysqladmin -uroot -p create gliar_db
SeCrEt
$ ./symfony configure:database "mysql:host=localhost;dbname=gliar_db" root SeCrEt
$ ./symfony propel:build-all --no-confirmation

Dal prossimo post cominceremo a creare i moduli e personalizzare le viste e le rotte.
Do per scontato la creazione dell’host virtuale per la visualizzazione dell’applicazione.

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

 
%d blogger cliccano Mi Piace per questo: