# Entity-Framework Beispiele

## Nutzung der ID-Generierung

Beispiele für das Speichern und Abrufen von Entities mit automatisch generierten IDs.

```php
// Neue Entity erstellen - ID wird automatisch generiert
$user = new User('Max Mustermann', 'max@example.com');
echo $user->id; // generierte ID, z.B. "7a3b9c2d1e4f5a6b8c9d0e1f2a3b4c5d"

// Entity speichern
$entityManager->save($user);

// Entity finden
$foundUser = $entityManager->find(User::class, $user->id);

// Entity aktualisieren (immutable update pattern)
$updatedUser = $foundUser->withName('Maximilian Mustermann');
$entityManager->save($updatedUser);
```

## Repository-Beispiele

```php
// Repository erstellen
$userRepository = new UserRepository($entityManager);

// Neuen User erstellen
$user = $userRepository->create('Anna Schmidt', 'anna@example.com');

// User suchen
$annaUser = $userRepository->findByEmail('anna@example.com');

// User aktualisieren
$updatedUser = $userRepository->changeName($annaUser, 'Anna Müller');

// User löschen
$userRepository->delete($updatedUser);
```

## Transaktionen

```php
$result = $entityManager->transaction(function($em) {
    $user1 = new User('User 1', 'user1@example.com');
    $user2 = new User('User 2', 'user2@example.com');

    $em->save($user1);
    $em->save($user2);

    return [$user1, $user2];
});
```

## Entity-Beziehungen (kommt später)

```php
// One-to-Many Beziehung
$post = new Post('Titel', 'Inhalt', $user->id);
$entityManager->save($post);

// Many-to-Many Beziehung (später)
$tag = new Tag('php');
$entityManager->save($tag);

$postTag = new PostTag($post->id, $tag->id);
$entityManager->save($postTag);
```
