Xose
Xose

Reputation: 85

Connection Firebase Firestore to laravel

I have installed laravel 5.8 and firebase project with firestore database.

 "name": "laravel/framework",
 "version": "v5.8.36",

Firestore database connected to android app. App fetches data good from Firestore. Than I want to create admin panel with laravel for android app and want to integrate laravel with that database.But can not do this.

What I did:

  1. installed php7.2

  2. installed laravel 5.8.*

  3. added php extension gRPC*

  4. Added gRPC as a Composer dependency composer require "grpc/grpc:^v1.1.0" in laravel project

  5. installed composer require google/cloud-firestore

  6. Generated Firebase Admin SDK json file and saved into storage folder in laravel

  7. Added this variable GOOGLE_APPLICATION_CREDENTIALS=/storage/files/progressive-yooung-team-firebase-adminsdk-ax7wi-d2a85ecabc.json (json file which generated firebase admin SDK) in .env file of laravel

  8. installed composer require kreait/firebase-php ^4.35

  9. Created Controller 'VarController' code:

    <?php
    
    namespace App\Http\Controllers;
    
    use Kreait\Firebase\Factory;
    
    
    class VarController extends Controller
    {
        public function index()
        {
            print_r("Output: 1");
            $factory = new Factory();
            print_r("Output: 2");
            $firestore = $factory->createFirestore();
            print_r("Output: 3");
            $database = $firestore->database();
    
            $userRef =  $database->collection('users');
            $snapshot = $userRef->document('Hus')->snapshot();
    
            if($snapshot->exists()) {
                printf('Document data:' . PHP_EOL);
                print_r($snapshot->data());
    
            }
            print_r("Output: 4");
        }
    }
    

Problem is, It does not fetch data from firestore document 'Hus' and its data exists:

users > Hus > name: "Husniddin"

I put print_r("Output: 1"), Output: 2, etc... in order to know where is problem. On screen I see only: Output: 1 Output: 2.

Upvotes: 5

Views: 10795

Answers (2)

Joshua Kall Nabuka
Joshua Kall Nabuka

Reputation: 1

change
$snapshot = $userRef->document('Hus')->snapshot();
to
$snapshot = $userRef->document('Hus')->documents();

Upvotes: 0

farooq
farooq

Reputation: 1673

Also don't forget to import these .

use Kreait\Firebase\Factory;
use Kreait\Firebase\ServiceAccount;
use \Kreait\Firebase\Database;
use Google\Cloud\Firestore\FirestoreClient;

After that , call the ServiceAccount() inside your function.

$serviceAccount = ServiceAccount::fromJsonFile(__DIR__.'/Firebase.json');
        $firebase = (new Factory)
        ->withServiceAccount($serviceAccount);
$firestore = new FirestoreClient([
            'projectId' => 'Your project name',
        ]);
        $collectionReference = $firestore->collection('users');

$documentReference = $collectionReference->document('Search element from document');
        $snapshot = $documentReference->snapshot();

Upvotes: 2

Related Questions