【问题标题】:Connection Firebase Firestore to laravel将 Firebase Firestore 连接到 laravel
【发布时间】:2020-04-19 21:44:22
【问题描述】:

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

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

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

我做了什么:

  1. 已安装php7.2

  2. 已安装 laravel 5.8.*

  3. 添加了 php 扩展 gRPC*

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

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

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

  7. 在 laravel 的 .env 文件中添加了这个变量 GOOGLE_APPLICATION_CREDENTIALS=/storage/files/progressive-yooung-team-firebase-adminsdk-ax7wi-d2a85ecabc.json(生成 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");
        }
    }
    

问题是,它不从 firestore document 'Hus' 获取数据,并且它的数据存在:

用户 > Hus > 名称:“Husniddin”

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

【问题讨论】:

    标签: laravel firebase google-cloud-firestore laravel-5.8


    【解决方案1】:

    别忘了导入这些。

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

    之后,在你的函数中调用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();
    

    【讨论】:

    • @faroq,不幸的是,在withServiceAccount() 方法没有代码工作之后,这段代码也不起作用,例如,我在该代码后面放了 print:"print_r('Output: 3')" 但它没有显示。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-05
      • 2022-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多