Menghubungkan Laravel Ke Firebase Realtime Database - CRUDPRO

Menghubungkan Laravel Ke Firebase Realtime Database

Apa itu Firebase Realtime Database?

Firebase Realtime Database adalah database NoSQL yang dihosting di cloud yang memungkinkan pengembang untuk menyimpan dan menyinkronkan data antar klien secara real time. Data yang disimpan akan terus tersedia meskipun aplikasi offline.

Requirement

  • Laravel 5.8 atau diatasnya
  • PHP 7.2 atau diatasnya
  • Proyek Firebase. Buat proyek baru di Firebase Consol
  • akun layanan Google. Ikuti petunjuk dalam dokumentasi resmi Server Firebase untuk menempatkan file konfigurasi JSON di jalur proyek laravel Anda.

Installation

Setelah menyiapkan Firebase Realtime Database, buka aplikasi Laravel Anda dan gunakan Composer untuk menginstal Kreait/laravel-firebase.


composer require kreait/laravel-firebase
Tambahkan service provider di dalam file config/app.php
<?php
// config/app.php
return [
    // ...
    'providers' => [
        // ...
        Kreait\Laravel\Firebase\ServiceProvider::class
    ]
    // ...   
];

Untuk mengakses proyek Firebase dan layanannya, Anda perlu mengautentikasi permintaan Anda. Akun layanan Google digunakan untuk berkomunikasi antar server. Setelah mengunduh file JSON untuk akun layanan Anda, buat variabel lingkungan FIREBASE_CREDENTIALS di file .env Anda dan tentukan jalur ke file JSON untuk akun layanan Anda.

FIREBASE_CREDENTIALS=/full/path/to/firebase_credentials.json
# or
FIREBASE_CREDENTIALS=relative/path/to/firebase_credentials.json

Untuk konfigurasi lainnya, Anda dapat menyalinnya ke direktori konfigurasi local dan mengubah konfigurasinya.

php artisan vendor:publish --provider="Kreait\Laravel\Firebase\ServiceProvider" --tag=config

Menyimpan file kredensial ke jalur penyimpanan adalah praktik yang aman dan baik. Kemudian Anda dapat dengan mudah mengakses file kredensial di file config/firebase.php (tidak perlu membuat variabel lingkungan di file .env).

'credentials' => [
    'file' => storage_path('firebase/firebase_credentials.json'),
     //.....
]

Inisialisasi Komponen Database Realtime

Setelah menyiapkan kredensial Firebase Anda, buka terminal Anda dan masukkan perintah berikut untuk membuat Controller baru.

php artisan make:controller FirebaseController

Di dalam konstruktor FirebaseController, buat sebuah instance dari firebase Realitime database menggunakan helper laravel app().

<?php

namespace App\Http\Controllers;class FirebaseController extends Controller
{
    protected $database;

    public function __construct()
    {
        $this->database = app('firebase.database');
    }

Mengambil Dana

Semua node dalam database dapat diakses menggunakan referensi.
$reference =  $database->getReference('path/to/child/location');

Anda dapat menjalankan query untuk memfilter dan mengurutkan hasil yang dikembalikan dari database realtime. Lihat dokumentasi untuk informasi lebih lanjut tentang kueri.

Simpan Data

kamu dapat menggunakan operation set() untuk menyimpan data ke refensi yang ditentukan. Menggunakan operasi set() menimpa data yang ada di path, memanggil data yang ada pada child node.

Misalnya, untuk membuat tugas di aplikasi todo Anda, setel:
$database->getReference(todos)
  ->set([
       'task' => 'Example Task',
       'is_done' => false
    ]);$database->getReference(todos/tasks)->set('New Task Name');

untuk membuat child node yang spesifik tanpa menimpa node lain, anda dapat menggunakan method update().

Anda dapat menggunakan metode push() untuk menambahkan data ke daftar yang ada. Metode push() menghasilkan unique key setiap kali child baru ditambahkan. unique key yang dihasilkan didasarkan pada stempel waktu dan membantu mengurutkan daftar item secara otomatis dengan cara yang berurutan.

Deleting data

Anda dapat menghapus referensi dan semua data yang ada di dalamnya.
$database->getReference('tasks')->remove();
Anda juga dapat menggunakan metode update() untuk menghapus beberapa anak dalam satu panggilan.

Anda juga dapat melakukan transaksi database di Realtime Database. Lihat dokumentasiuntuk informasi lebih lanjut tentang transaksi database.