Kom igång med Doctrine ORM i Symfony

By . Latest revision .

Du har sedan tidigare ett Symfony projekt och skall nu koppla en databas till det.

Du skall använda Doctrine ORM som är ett fristående projekt och väl integrerat med Symfony.

Du skall skapa en databas med en eller flera tabeller och bygga en Symfony applikation som utför CRUD (Create, Read, Update, Delete) mot databasen.

Du kan välja att använda databasen SQLite eller MariaDB/MySQL.

#Förkunskaper

Du har sedan tidigare ett Symfony projekt som du kan jobba vidare på.

Du bör ha jobbat igenom någon övning som visar hur Symfony fungerar tillsammans med Doctrine.

Du kan använda SQLite eller MariaDB/MySQL.

#Introduktion och förberedelse

Du skall göra en mindre CRUD applikation i Symfony med Doctrine. Du kan välja fokus för din applikation. Standardfokuset på uppgiften är “Bibliotek med böcker” men du kan ändra fokus och spara andra saker i din databas.

Du kan välja mellan SQLite och MariaDB. Om du väljer SQLite så ligger hela databasen i en fil och följer med till produktionsmiljön (studentservern). Du har alltså samma databas lokalt och på produktionsmiljön. Om du jobbar med MariaDB så har du en databas lokalt och en annan databas på produktionsservern. Det blir lite mer “riktigt” men också lite mer konfiguration att hantera. Är du osäker så kan du börja med SQLite och den enklare vägen. Du kan alltid byta databas i ett senare skede.

#Krav

Kraven är uppdelade i sektioner.

#Bibliotek CRUD

  1. Skapa en landningssida library/ för din “Bibliotek” applikation. Placera landningssidan i din navbar.

  2. Skapa en databas som innehåller en tabell med böcker. Lägg in minst tre böcker (riktiga eller påhittade) med deras titel, ISBN och författare samt en bild som representerar boken.

  3. [CREATE] Skapa en möjlighet att lägga till en ny bok. Man skall kunna mata in detaljer om boken i ett formulär.

  4. [READ ONE] Skapa en webbsida där man kan se detaljer om en viss bok.

  5. [READ MANY] Skapa en webbsida där man kan se samtliga böcker i en HTML tabell (eller liknande). Man skall kunna klicka på en bok och komma vidare till en sida som enbart visar detaljer om den boken.

  6. [UPDATE] Man skall kunna uppdatera detaljer om en bok. Det skall finnas en sida som visar bokens detaljer i ett formulär och man skall kunna uppdatera bokens detaljer och spara dem.

  7. [DELETE] Man skall kunna radera en bok.

  8. Använd GET och POST. Kom ihåg att alltid använda POST när du gör en uppdatering i databasen.

  9. Alla delar av “Biblioteket” skall fungera tillsammans som en applikation. Det finns länkar och formulär som är sammankopplade och man får en “user experience” av att applikationen hänger ihop.

  10. [OPTIONELLT] Inkludera möjligheten att återställa databasen till sitt ursprungliga innehåll via routen library/reset.

#Bibliotek JSON

  1. I din landningssida för api/ lägger du till routen api/library/books som visar upp samtliga böcker i biblioteket i en JSON struktur.

  2. Lägg till routen api/library/book/<isbn> där man kan se en av böckerna via dess ISBN nummer. Lägg till ett exempel som länkar direkt till en av böckerna i biblioteket.

#Utvecklingsmiljö

  1. Fixa till din kod enligt den kodstil du kör genom att köra composer csfix.

  2. Kolla din kod hur den matchar dina linters genom att köra composer lint.

  3. Dubbelkolla att dina testfall passerar med composer phpunit.

  4. Generera dokumentation av din kod med composer phpdoc.

#Publicera

  1. Committa alla filer och lägg till en tagg 5.0.0. Om du gör uppdateringar så ökar du taggen till 5.0.1, 5.0.2, 5.1.0 eller liknande.

  2. Kör dbwebb test kmom05 för att kolla att du inte har några fel.

  3. Pusha upp repot till GitHub, inklusive taggarna.

  4. Gör en dbwebb publishpure report och kontrollera att att det fungerar på studentservern.

#Tips från coachen

Lycka till och hojta till i chatt och forum om du behöver hjälp!

#Revision history

  • 2023-05-02: (C, mos) Ändra library/reset till optionellt.
  • 2023-04-28: (B, mos) Uppdaterad inför ht23 och optionell inloggnin gborttagen.
  • 2022-04-25: (A, mos) Första utgåvan till mvc-v2.

Document source.

Category: kurs mvc.