将 Firebase Firestore 连接到 Laravel

Xos*_*ose 6 laravel firebase google-cloud-firestore laravel-5.8

我已经使用firestore数据库安装了laravel 5.8firebase项目。

 "name": "laravel/framework",
 "version": "v5.8.36",
Run Code Online (Sandbox Code Playgroud)

Firestore 数据库连接到 android 应用程序。应用程序从 Firestore 获取数据良好。比我想用 laravel 为 android 应用程序创建管理面板并想将 laravel 与该数据库集成。但不能这样做。

我做了什么:

  1. 安装php7.2

  2. 已安装 Laravel 5.8.*

  3. 添加了 php 扩展 gRPC*

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

  5. 已安装 composer require google/cloud-firestore

  6. 生成 Firebase Admin SDK json 文件并保存到 Laravel 的存储文件夹中

  7. GOOGLE_APPLICATION_CREDENTIALS=/storage/files/progressive-yooung-team-firebase-adminsdk-ax7wi-d2a85ecabc.json在 Laravel 的 .env 文件中添加了这个变量(生成 firebase admin SDK 的 json 文件)

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

  9. 创建控制器“VarController”代码:

    <?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");
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)

问题是,它不会从 Firestore文档“Hus”中获取数据并且它的数据存在:

用户 > Hus > 名称:“Husniddin”

我把print_r("Output: 1"), Output: 2, etc... 为了知道问题出在哪里。在屏幕上我只看到:输出:1 输出:2。

far*_*ooq 2

另外不要忘记导入这些。

use Kreait\Firebase\Factory;
use Kreait\Firebase\ServiceAccount;
use \Kreait\Firebase\Database;
use Google\Cloud\Firestore\FirestoreClient;
Run Code Online (Sandbox Code Playgroud)

之后,调用ServiceAccount()您的函数内部。

$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();
Run Code Online (Sandbox Code Playgroud)