4.5 KiB
4.5 KiB
🔗 Setup Laravel dengan Supabase PostgreSQL
Step 1: Ambil Credentials dari Supabase Dashboard
- Login ke Supabase Dashboard
- Pilih project Anda
- Klik Settings → Database
- Scroll down ke bagian Connection string
- Pilih "URI" tab
- Copy connection string (format:
postgresql://...)
Step 2: Parse Connection String
Connection string format Supabase:
postgresql://[user]:[password]@[host]:[port]/[database]
Contoh:
postgresql://postgres.ohahxydutfqlfuxrjdwm:HG!rji9a9wnLaZY@aws-1-ap-northeast-1.pooler.supabase.com:5432/postgres
Parse menjadi:
- User:
postgres.ohahxydutfqlfuxrjdwm - Password:
HG!rji9a9wnLaZY - Host:
aws-1-ap-northeast-1.pooler.supabase.com - Port:
5432 - Database:
postgres
Step 3: Update .env File
DB_CONNECTION=pgsql
DB_HOST=aws-1-ap-northeast-1.pooler.supabase.com
DB_PORT=5432
DB_DATABASE=postgres
DB_USERNAME=postgres.ohahxydutfqlfuxrjdwm
DB_PASSWORD=HG!rji9a9wnLaZY
Step 4: Clear Config Cache
php artisan config:cache
php artisan config:clear
Step 5: Test Connection
Run migrations:
php artisan migrate
Atau test di Tinker:
php artisan tinker
DB::connection()->getPdo()
⚙️ Laravel Configuration Files
File yang handle database connection:
config/database.php
'pgsql' => [
'driver' => 'pgsql',
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', '5432'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
// ...
],
❗ PENTING: Jangan edit config/database.php - edit .env saja!
🔐 Security Notes
⚠️ JANGAN COMMIT .env ke Git!
.env file Anda berisi credentials sensitif. Pastikan:
.envada di.gitignore- Share
.env.examplesaja ke team - Setiap developer punya
.envsendiri
.gitignore harus ada:
.env
.env.local
.env.*.local
🧪 Testing Database Connection
Method 1: Direct Test
php artisan tinker
Kemudian:
DB::select('select 1')
// Jika tidak error, connection berhasil!
Method 2: Run Query
App\Models\UserDosen::count()
// Harusnya return jumlah users
Method 3: Check Environment
php artisan tinker
env('DB_HOST')
env('DB_USERNAME')
🔄 Controllers & Routes
Kabar Baik: TIDAK ADA PERUBAHAN DIPERLUKAN!
Karena Supabase adalah PostgreSQL, semua Eloquent queries bekerja sama:
// Ini work di Supabase (sama dengan DB lokal)
UserDosen::where('nip', $nip)->first()
UserStaff::paginate(10)
Attendance::whereBetween('tanggal', [$start, $end])->get()
Laravel Eloquent sudah abstrak semua database operations.
📝 Troubleshooting
Error: "SQLSTATE[08006] could not connect to server"
Solution:
- Pastikan credentials benar
- Cek IP address whitelist di Supabase (Settings → Database → Connection pooler)
- Cek firewall settings
Error: "column does not exist"
Solution:
- Jalankan migrations:
php artisan migrate - Cek schema di Supabase console
Error: "FATAL: database does not exist"
Solution:
- Verify DB_DATABASE name benar
- Di Supabase biasanya "postgres"
Slow Queries
Solution:
- Supabase memiliki connection pooler limits
- Gunakan connection pooling dengan PgBouncer mode
- Update
DB_HOSTke pooler URL
🎯 Current Setup Status
Berdasarkan .env Anda sekarang:
✅ DB_CONNECTION = pgsql
✅ DB_HOST = aws-1-ap-northeast-1.pooler.supabase.com
✅ DB_PORT = 5432
✅ DB_DATABASE = postgres
✅ DB_USERNAME = postgres.ohahxydutfqlfuxrjdwm
✅ DB_PASSWORD = [terisi]
Status: READY TO USE ✓
📊 Database Schema
Schema yang sudah ada:
✅ users_dosen
├── id (uuid)
├── nama, nip, nidn
├── prodi, foto, role
├── password, remember_token
└── timestamps
✅ users_staff
├── id (uuid)
├── nama, nip, nidn
├── bagian, foto, role
├── password, remember_token
└── timestamps
✅ attendances
├── id (uuid)
├── user_id, user_type
├── tanggal, jam_masuk, jam_keluar
├── durasi_jam, keterangan
└── timestamps
✅ Next Steps
- Verify connection:
php artisan tinker→DB::select('select 1') - Run migrations jika belum:
php artisan migrate - Test login dengan credentials existing
- Check data di Supabase dashboard
Semuanya sudah configured! 🚀