Create
Met het create deel ga je een nieuwe entiteit aanmaken en in de database opslaan. Je voegt bijvoorbeeld een gebruiker toe aan jouw systeem.
Simpel voorbeeld
php// Volgende staat in de use sectie use App\Entity\Book; use Doctrine\ORM\EntityManagerInterface; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\Routing\Attribute\Route; #[Route('/book-add', name: 'app_add_book')] public function create(EntityManagerInterface $entityManager) { // We maken een nieuwe (leeg) boek aan $book = new Book(); // We bereiden de database voor om het nieuwe boek op te slaan $entityManager->persist($book); // We voeren de voorbereide statements uit $entityManager->flush(); }
Create met data
Je kan met de getters en setters van de Entity de data natuurlijk ook aanpassen - soms moet dat ook, omdat sommige velden verplicht zijn.
php// Volgende staat in de use sectie use App\Entity\Book; use Doctrine\ORM\EntityManagerInterface; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\Routing\Attribute\Route; #[Route('/book-add', name: 'app_add_book')] public function create(EntityManagerInterface $entityManager) { // We maken een nieuw (leeg) boek aan $book= new User(); // We zetten de titel en de auteur via de setters $book->setTitle('De Helaasheid der Dingen'); $book->setAuthor('Dimitri Verhulst'); // Nu alle velden die verplicht zijn ook gezet zijn, kunnen we de gebruiker opslaan // We bereiden de database voor om de nieuwe gebruiker op te slaan $entityManager->persist($book); // We voeren de voorbereide statements uit $entityManager->flush(); }
Dit is een simpele versie. Uiteraard moet je waarschijnlijk nog wat data toevoegen aan de Book entity. Meer informatie lees je in de paragraaf van de Model/Entity, ook over de werking met getters en setters. Dit voorbeeld maak het boek direct aan in de database zodra je de url bezoekt. Normaal gesproken zou je een formulier gebruiken om de data in te voeren. Hoe je data verstuurt en aanpast via een formulier lees je bij het hoofdstuk over formulieren.
persist en flush
persist() slaat de entiteit op in de entity manager. Hiermee is de entiteit tijdelijk opgeslagen maar nog niet daadwerkelijk in de database tabel gezet. flush() voert daadwerkelijk de SQL INSERT uit. Je kunt meerdere objecten lokaal opslaan in de entity manager met persist() en ze vervolgens allemaal in één keer met flush() wegschrijven naar de database tabel.