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 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.

#Användare och login

Detta kravet är OPTIONELLT och du gör det om du har tid, energi och lust. Du kan också göra delar av kravet för att prova på.

(Eventuellt har du nytta av kravet i projektet, men det är ingen garanti på det.)

  1. Gör en CRUD för användare till din webbplats. Man skall kunna lägga till, visa, uppdatera och ta bort användare.

  2. Detaljer du kan spara om användaren är epost, akronym, namn, lösenord och typ av användare (vanlig eller administratör).

  3. Lägg till minst två användare från början. Döp dem till admin med lösenord admin och doe med lösenord doe.

  4. Lägg till en bild till användaren som genereras utifrån epostadressen och använder Gravatar för att visa bilden.

  5. Spara användarens lösenord med password_hash().

  6. Gör en inloggningssida där användaren kan logga in på din webbplats. Använd password_verify() när du kontrollerar användarens lösenord.

  7. Gör en profilsida för användaren som bara kan visas när användaren är inloggad och den visar enbart information om den inloggade användaren.

  8. Gör så att en inloggad användare kan uppdatera sin egen profilinformation.

  9. Gör så att det bara är användaren som är administratör som kommer åt att visa, skapa, uppdatera och radera samtliga användare på webbplatsen.

  10. Administratören kan även uppdatera rollen för en användare.

  11. Lägg till så att en ny användare kan registrera sig själv på webbplatsen och därefter kan logga in direkt.

#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

  • 2022-04-25: (A, mos) Första utgåvan till mvc-v2.

Document source.

Category: kurs mvc.