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=prodna<host>:80APP_ENV=devna<host>:8080Razlike:
prodima agresivniji caching i radi puno brze. Nakon svakog updejta potrebno je napraviti clear cache (bin/console cache:clear -e prod).devrebuilda cache ako je potrebno za svaki request (sporije), ukljucuje profiling i debug toolbar
bin/consoleskripta: 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:entityse moze skratiti nam:e, alim:fne odreduje o kojoj se komandi radi; postojemake:fixturesimake: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]-cmdu 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:createbin/console doctrine:database:update --forcebin/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).