composer.json
, require
dio, pocetakopcache
i APCu
ukljucenicomposer update
(instalirati composer
po potrebi)CREATE DATABASE
)DATABASE_URL
) ili bilo kak drugacije preko environmenta (apache/nginx, /usr/bin/env
...)
Preporucena konfiguracija servera je na dva porta, razlika je u ENV varijabli APP_ENV
Primjer:
APP_ENV=prod
na<host>:80
APP_ENV=dev
na<host>:8080
Razlike:
prod
ima agresivniji caching i radi puno brze. Nakon svakog updejta potrebno je napraviti clear cache (bin/console cache:clear -e prod
).dev
rebuilda cache ako je potrebno za svaki request (sporije), ukljucuje profiling i debug toolbar
bin/console
skripta: sve podkomande u ovom doc su napisane punim imenom; kod koristenja nije potrebno upisivati puno ime ako se ime podkomande moze jednoznacno odrediti iz kratice (primjericemake:entity
se moze skratiti nam:e
, alim:f
ne odreduje o kojoj se komandi radi; postojemake:fixtures
imake:form
. U tom slucaju da se pozove npr.make:form
, dovoljno je upisatim:fo
; takva kratica opet jednoznacno odreduje o kojoj se komandi radi).Pomocne podkomande:
bin/cons list [grupa|cmd]
- grupa je prefix prije:
bin/cons help [cmd]
-cmd
u punom ili skracenom obliku
Tablice u bazi su mapirane na entity klase. Svaka entity klasa predstavlja jedan red u tablici.
Entity klasu ne treba pisati rucno, najlakse je generirati preko cmd wizarda (komanda bin/console make:entity
).
Potrebno je postaviti svaki field i njegov tip (i opcionalne parametre, npr. duzina za text/string, itd.).
Id polje nije potrebno postavljati, generira se automatski.
Ista komanda se koristi i za editiranje entity klasa. Potrebno je samo na pocetku upisati ime postojece klase.
Output direktorij je src/Entity
. Generirana struktura je (uglavnom ne treba mjenjati rucno):
Trenutno su generirana 2 entityja:
Osim uobicajenih polja sadrzi:
dateCreated
: u php-u je predstavljeno kao DateTime(Immutable) objekt, u bazi je spremljeno kao date timecode
: pokazuje na drugu vrstu entityja (CodeTable), u bazi je spremljeno samo kao id
make:entity
komande (type je postavljen na
relation
- to pokrece wizard za relacije)
Nakon svake promjene vezane za bazu (@ORM definicije, tip podatka...) na entity klasama potrebno je napraviti update baze:
bin/console doctrine:database:create
bin/console doctrine:database:update --force
bin/console doctrine:database:drop --force
), pa opet create/update
Nakon kreiranja entityja, moguce je kreirati Create-Read-Update-Delete preglede za svaki od njih.
Wizard cmd bin/console make:crud
.
Generirane komponente:
src/FormType
): definicija za formu (koja polja su ukljucena, tipovi polja na formi) - default: autodetect
TestType.code
- polje je referenca
add()
, drugi parametar je
null
: polje i dalje koristi autodetect za tip (u ovom slucaju EntityType- polje predstavlja drugi entity, drugu tablicu u bazi; u html-u se prikazuje kao dropdown)
Kod generiranja klase TestType
, u builder je dodano polje dateCreated
.
Naknadno polje je maknuto iz buildera (maknut je poziv na $builder->add('dateCreated')
.
U TestController::new
, iza if ($form->isSubmitted() && $form->isValid())
naknadno je dodano
$test->setDateCreated(new \DateTimeImmutable());
. Svaki put kad se napravi novi zapis, dodaje se
datum kreiranja (nije potrebno imati takvo polje na formi).