Firestoreにはリレーション(参照)を保持するデータ型は存在しますが、データ取得時にそれらをJOINすることはできません。データの取得は、1つのコレクションに対して条件に合うドキュメントを取得することぐらいしかできないです。データの結合が必要なら、それぞれデータを取得した後に、自前で行う必要があります。
なのでFirestoreでは、各ドキュメントに必要な情報を冗長化(非正規化)して保持するのが一般的だと思います。
もしある商品やあるカテゴリと関連するユーザ一覧を取得したいなら、ユーザのドキュメントに商品IDのリストやカテゴリIDのリストを含めることで対応します。(もしくは、商品ドキュメントやカテゴリドキュメントのサブコレクションにユーザを追加する)
参考
別解:BigQueryを利用する
自分は使ったことがありませんが、FirestoreのデータをBigQueryにexportするとSQLのような複雑な集計ができるようです。PHPからも実行できそうし、Extensionを使うとリアルタイムにBigQueryにexportもできるっぽいです。
別解:RDBも併用する
Firestoreは複雑な検索や集計には向いていないです。すべてをFirestoreで完結させるのが難しいのであれば、RDBを併用することも一つの選択肢だと思います。参考になりそうな記事があったので載せておきます。
RDBとFirebaseのDB両方使ったっていいじゃない
もし、アプリ機能より、管理画面側の機能の方が主体なら、RDBのみを使って、Laravelでアプリ向けのAPIを提供する方が適切かもしれません
※ 正直、自分もFirestoreを使ったサービスを1つ作ってみた程度で、しかもまだ最低限の機能しかないので、回答してみたけど、あまり自信はないです。他の人の意見を聞いてみたいけど、あまりこの手の質問に真面目に回答してくれる人は少ないですかね...
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/02 04:10
2020/03/02 04:16
2020/03/02 08:40
2020/03/02 09:35
2020/03/02 10:38