Hola, en mi primer post les vengo a mostrar cómo sincronizar nuestros modelos de Eloquent con la base de datos de Firebase.
Un poco sobre Firebase
Firebase es una plataforma para el desarrollo de aplicaciones web y aplicaciones móviles desarrollada por James Tamplin y Andrew Lee en 2011 y adquirida por Google en el año 2014, está bajo el concepto de BAAS (Backend-As-A-Service) que quiere decir que nos otorga ciertas herramientas como servicio para poder construir nuestra app, como la base de datos en tiempo real, o el servicio de autenticación gratuito, o el hosting gratuito, o el storage, hasta functions (en otro post explicare esto ultimo), y mucho más, lo mejor de todo lo que nombre recién es que podemos usar todo desde Javascript, lo único que habría que hacer es usar el SDK. A continuación les dejo el video oficial
Arranquemos..
Nosotros lo que haremos con Laravel, es sincronizar nuestros modelos de Eloquent con la base de datos en tiempo real de Firebase, es decir, que cuando se haga cualquier acción desde nuestro modelo (Crear, Editar o Borrar), se verá reflejado en la BD de Firebase.
Paso 1 : Creando una cuenta
Entrar a la web de Firebase y presionemos el botón comenzar para crear nuestra cuenta, nos pedirá acceder con Google, una vez hecho esto ya tendremos nuestra cuenta creada y lista para trabajar
Paso 2 : Agregando un proyecto
Ahora que ya tenemos nuestra cuenta tenemos que agregar nuestro proyecto en el cual usaremos la base de datos, para hacerlo entramos a la Consola de Firebase y presionamos en el botón que dice «Añadir proyecto» o el que dice »Agregar proyecto», e ingresamos los datos requeridos
Paso 3 : Configurando
Una vez en el siguiente panel
Debemos dirigirnos a la sección «Database» en el menú y presionar comenzar a Realtime Database, colocamos en modo de prueba y con esto ya tenemos configurada nuestra BD. Ahora es necesario obtener la API Key y otros datos más para que Laravel pueda trabajar, los mismos los podremos obtener presionando el botón de configuración que se encuentra al lado de donde dice «Project Overview» y después seleccionar Configuración del proyecto, nos llevara a la sección donde encontraremos todos los datos que necesitamos, aquí les detallare donde obtener cada uno, más adelante necesitaremos lo siguiente :
1 2 3 4 5 | 'api_key' => 'API_KEY', // ESTA LA PODEMOS OBTENER PRESIONANDO Agregar Firebase a tu app web 'auth_domain' => 'AUTH_DOMAIN', // ESTA LA PODEMOS OBTENER PRESIONANDO Agregar Firebase a tu app web 'database_url' => 'https://your-database-at.firebaseio.com', // ESTA LA PODEMOS OBTENER PRESIONANDO Agregar Firebase a tu app web 'secret' => 'DATABASE_SECRET', // Esta la sacamos dirigiendonos a la seccion Cuentas de Servicio 'storage_bucket' => 'STORAGE_BUCKET', // ESTA LA PODEMOS OBTENER PRESIONANDO Agregar Firebase a tu app web |
Como bien detallaba en los comentarios, la mayoría de los datos los podemos obtener presionando en la parte de Agregar Firebase a tu app web, la cual se encuentra tanto en la primera vista de la consola, como en configuración de proyecto.
A excepción el único que no encontraremos es SECRET, que es el secreto de la base de datos, este lo obtenemos en la sección Cuentas de servicio que se encuentra en configuración del proyecto.
Una vez que tengamos todos estos datos podemos pasar a codear!!
Paso 4 : Laraveleando
Empezamos creando nuestro proyecto en Laravel con composer create-project --prefer-dist laravel/laravel MyFirebaseApp o laravel new MyFirebaseApp una vez creado accedemos a el como normalmente hacemos
Paso 5 : Agregando Paquetes y configurando
A continuación tenemos que agregar un paquete que nos facilitará todo el trabajo, para que agregarlo vamos al directorio de nuestra aplicación y ejecutamos el siguiente comando :
1 | composer require mpociot/laravel-firebase-sync |
Luego dirígete a la carpeta CONFIG dentro de tu app en Laravel y abre el siguiente archivo services.php
A este archivo agregale el siguiente código y completa los datos con los que obtuvimos más arriba:
1 2 3 4 5 6 7 | 'firebase' => [ 'api_key' => 'AQUI INGRESA LA API KEY MENCIONADA ANTERIORMENTE', 'auth_domain' => 'AQUI INGRESA LO MENCIONADO ANTERIORMENTE', 'database_url' => 'AQUI INGRESA LO MENCIONADO ANTERIORMENTE', 'secret' => 'AQUI INGRESA LO MENCIONADO ANTERIORMENTE', 'storage_bucket' => 'AQUI INGRESA LO MENCIONADO ANTERIORMENTE', ] |
Una vez hecho esto tenes que hacer las migraciones y los modelos para que funcione
Paso Final
A todo modelo que quieras sincronizar automáticamente tenes que agregarle primero :
1 | use Mpociot\Firebase\SyncsWithFirebase; |
y dentro de las clase agrega
1 | use SyncsWithFirebase; |
Si hacemos un ejemplo, el modelo debería quedarte así:
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?php namespace App; use Illuminate\Database\Eloquent\Model; use Mpociot\Firebase\SyncsWithFirebase; class MyModel extends Model { use SyncsWithFirebase; protected $fillable = ['nombre', 'apellido']; } |
¡Y listo!, ya tenes tu modelo sincronizado con Firebase, lo que es realmente increíble, es que podes usar MySQL y Firebase a la vez, ya que MySQL es una base de datos relacional y por el otro lado Firebase es NoSQL (No relacional)
¿Y ahora?
Ahora podes hacer muchas cosas, entre ellas :
- Hacer una aplicación con HTML, CSS y Javascript que use una base de datos en tiempo real
- Tener los datos en otra BD
- SEGUIR APRENDIENDO!!
Bueno, espero que les haya gustado, si tienen alguna pregunta no duden en contactarme.