将Firebase Firestore连接到laravel

Connection Firebase Firestore to laravel

我已经安装了laravel 5.8和带有Firestore数据库的firebase项目。

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

Firestore数据库已连接到android应用。应用程序可从Firestore提取良好的数据。比我想使用laravel为Android应用程序创建管理面板,并想将laravel与该数据库集成。但是无法做到这一点。

我做了什么:

  • 已安装php7.2

  • 已安装laravel 5.8。*

  • 添加了php扩展名gRPC *

  • 在laravel项目中添加了gRPC作为Composer依赖项composer require"grpc/grpc:^v1.1.0"

  • 已安装composer require google/cloud-firestore

  • 生成的Firebase Admin SDK json文件并保存到laravel中的存储文件夹中

  • 在laravel的.env文件中添加了此变量GOOGLE_APPLICATION_CREDENTIALS=/storage/files/progressive-yooung-team-firebase-adminsdk-ax7wi-d2a85ecabc.json(生成firebase管理SDK的json文件)

  • 已安装composer require kreait/firebase-php ^4.35

  • 已创建的控制器" VarController"代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    <?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");
        }
    }
  • 问题是,它无法从Firestore文档'Hus'中获取数据,并且其数据存在:

    users > Hus > name:"Husniddin"

    我放了print_r("Output: 1"),输出:2,依此类推……以便知道问题出在哪里。在屏幕上,我仅看到:输出:1输出:2。


    也不要忘记导入这些。

    1
    2
    3
    4
    use Kreait\\Firebase\\Factory;
    use Kreait\\Firebase\\ServiceAccount;
    use \\Kreait\\Firebase\\Database;
    use Google\\Cloud\\Firestore\\FirestoreClient;

    然后,在函数内调用ServiceAccount()

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $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();


    更改
    $snapshot = $userRef->document('Hus')->snapshot();


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