Skip to content

Commit

Permalink
updates
Browse files Browse the repository at this point in the history
  • Loading branch information
priyadi committed Jul 21, 2024
1 parent 916db23 commit 1bb4e6a
Show file tree
Hide file tree
Showing 3 changed files with 104 additions and 6 deletions.
5 changes: 4 additions & 1 deletion docs/03-tutorial/05-repository.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,10 @@ title: Repository

Repository pattern adalah pola design yang memberikan abstraksi untuk mengakses
data. Kita menggunakan repository untuk mengambil dan menyimpan data ke dalam
database. Hal tersebut dilakukan melalui satu pintu. Apabila ada perubahan cara
database.

Hal tersebut dilakukan melalui satu pintu. Keluar masuk entity dari dan ke
database dilakukan hanya melalui repository. Apabila ada perubahan cara
penyimpanan data, hal tersebut mudah dilakukan karena hanya perlu mengubah
implementasi repository.

Expand Down
100 changes: 100 additions & 0 deletions docs/03-tutorial/06-bekerja.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
---
title: Bekerja Dengan Entity
---

Setelah membuat domain, mapping database, dan repositorynya, kita sudah bisa
bekerja dengan entity tersebut.

## Membuat `Post` Baru dan Menyimpannya ke Database

```php
use App\Domain\Entity\Post;
use App\DomainService\Repository\PostRepository;
use Doctrine\ORM\EntityManagerInterface;

/** @var PostRepository $postRepository */
/** @var EntityManagerInterface $entityManager */

$post = new Post('Title', 'Content');
$postRepository->add($post);
$entityManager->flush();
```

## Mengambil `Post` dari Database

```php
use App\Domain\Entity\Post;
use App\DomainService\Repository\PostRepository;

/** @var PostRepository $postRepository */

// $post akan null jika tidak ditemukan di database
$post = $postRepository->get('91b2679e-47a5-11ef-b06f-8c8caab77b0f');

// akan throw exception jika tidak ditemukan di database, dan otomatis
// menjadi error 404 di browser
$post = $postRepository->fetch('91b2679e-47a5-11ef-b06f-8c8caab77b0f');
```

## Mengubah `Post` dan Menyimpannya ke Database

```php
use App\Domain\Entity\Post;
use App\DomainService\Repository\PostRepository;

/** @var PostRepository $postRepository */
/** @var EntityManagerInterface $entityManager */

$post = $postRepository->get('91b2679e-47a5-11ef-b06f-8c8caab77b0f');
$post->setTitle('New Title');
$post->setContent('New Content');
$entityManager->flush();
```

## Menghapus `Post` dari Database

```php
use App\Domain\Entity\Post;
use App\DomainService\Repository\PostRepository;
use Doctrine\ORM\EntityManagerInterface;

/** @var PostRepository $postRepository */
/** @var EntityManagerInterface $entityManager */

// cara pertama
$post = $postRepository->get('91b2679e-47a5-11ef-b06f-8c8caab77b0f');
$postRepository->removeElement($post);
$entityManager->flush();

// cara kedua
$postRepository->remove('91b2679e-47a5-11ef-b06f-8c8caa77b0f');
$entityManager->flush();
```

## Melakukan Iterasi Terhadap Semua `Post`

```php
use App\DomainService\Repository\PostRepository;
use Doctrine\ORM\EntityManagerInterface;

/** @var PostRepository $postRepository */
/** @var EntityManagerInterface $entityManager */

// cara langsung, akan mengambil semua data dari database sekaligus, dan
// berpotensi out of memory jika data terlalu banyak:

foreach ($postRepository as $post) {
// lakukan sesuatu dengan $post
}

// menggunakan batch, akan mengambil data per halaman, dan tidak akan
// mengalami out of memory:

foreach ($postRepository->withItemsPerPage(1000)->getPages() as $page) {
foreach ($page as $post) {
// lakukan sesuatu dengan $post
}

$entityManager->clear();
}
```
5 changes: 0 additions & 5 deletions docs/03-tutorial/06-controller.md

This file was deleted.

0 comments on commit 1bb4e6a

Please sign in to comment.