Part 3.1 — Membuat RESTFul API menggunakan Yii2 (basic template) sebagai backend dan React JS sebagai frontend — FullStackOverflow Developer.

Ahmad Fadly Dzil Jalal
3 min readJan 11, 2021

--

Fokus: Membuat use case aplikasi, skema database , migration dan seed pada database (Backend — Yii2 )

Github Repo: https://github.com/ahmadfadlydziljalal/yii2-reactjs

Melanjutkan dari artikel sebelumnya: https://ahmadfadlydziljalal.medium.com/membuat-restful-api-menggunakan-yii2-basic-template-sebagai-backend-dan-react-js-sebagai-8c43a2c1c9f

Oke, Kita lanjutkan aplikasi ini. Disela-sela kesibukan Saya, menangani beberapa perusahaan, ada rasa tanggung jawab untuk menyelesaikan artikel ini. Anehnya, aplikasi ini adalah salah satu fitur pada aplikasi di salah satu perusahaan tempat Saya bekerja.

Membuat use case.

Aplikasi ini dibuat layaknya sebuah note (catatan) untuk pengingat diri sendiri mengenai suatu rutinitas, peristiwa atau bahkan diary diri sendiri.

User yang menggunakan aplikasi ini bisa membagikan catatan miliknya kepada user lain yang sudah terdaftar di aplikasi. Jika digunakan sebagai reminder, backend akan membuat notifikasi via email melalui waktu tertentu yang di setup oleh user sendiri saat membuat note. (Setiap pagi, atau jam tertentu selama reminder belum finish)

Jika catatan hanya bersifat diary atau curhatan, user memilih status finish pada saat pembuatan, supaya backend akan mengabaikannya.

Use case application

Membuat Skema Database

Gambar dibuat berdasarkan generate di RDMS Tool, sebelumnya di skatch dulu di kertas.

Skema akan terdiri dari beberapa tabel, yaitu:

  • user, (kita akan menggunakan migration user bawaan Yii2)
  • note_label. (berisi record yang akan mencitrakan sifat pada note, apakah bersifat Note (seperti catatan biasa), Reminder, atau ToDo.
  • note, (berisi data master note),
  • note_detail (berisi data detail dari master note)
  • note_share_user (berisi junction_record antara note dengan user)

Memahami Relasi Antar Table

Karena yang kita gunakan adalah RDBMS, perlu Kita mengetahui relasi antar tabel. Hal ini akan sangat membantu untuk kita membuat aplikasi sesuai dengan yang diinginkan.

  • Satu record pada table `note` bisa berelasi dengan banyak record pada table `note_detail` (1:M)
  • Satu record pada table `note` hanya bisa memiliki satu referensi dari record `note_label` (M:1), Interpretasi mudahnya, dengan kata lain, satu record pada tabel `note_label` bisa menjadi referensi pada record-record di tabel `note` (1:N).
  • Satu record note bisa dishare ke banyak user, sehingga satu user bisa memiliki banyak share_note. Membingungkan ? Karena relasi ini bersifat (M:M).
  • Untuk itu, saya cenderung menghindari (M:M), maka hubungan antara `table_note` dengan `table_user` akan kita buat sebuah junction table bernama `note_share_user`

Membuat Migration di Backend — Yii2

Oke, Kita akan melakukan migration untuk memanage tabel-tabel kita didatabase yii2reactjs yang sudah kita buat sebelumnya.

Tabel User

Sebenarnya ini agak canggung, kenapa ? , Kita tidak perlu capek-capek mengdefinisikan tabel user kita. Ada banyak library Yii2 yang menghandle user management RBAC, which is pasti menggunakan table user. `` Dont reinvinted the wheel``. Sekalian saja dah saya share disini.

Kita tidak buat migration, tapi kita malah akan menggunakan migration milik Yii2. Coba masuk ke folder backend\vendor\yii2\rbac\migrations. Disitu kita lihat bagaimana Yii2 mendefinisikan tabel-tabel yang diguanakan dalam RBAC

Yii2 RBAC Migration

Jangan lupa lakukan setting authManager di `bakcend/config/console.php` dan `backend/config/web.php` . Lalu jalankan perintah pada direktori backend.

yii migrate — migrationPath=@yii/rbac/migrations
Setting Yii2 app
Konfimasi eksekusi migration

Ketik yes: maka hasilnya akan sebagai berikut.

Hasil migration

Coba deh lihat ke database yii2react kita,

List table pada database.

Bersambung pada artikel 3.2:

https://ahmadfadlydziljalal.medium.com/membuat-restful-api-menggunakan-yii2-basic-template-sebagai-backend-dan-react-js-sebagai-2223e8613322

--

--

Ahmad Fadly Dzil Jalal

Mencari rezeki dengan membuat aplikasi komputer. (PHP <Yii2, CI>, ReactJS, Android- Java Native ). Tawaran / salary bagus, kontak Saya: dziljalal1@gmail.com