はじめに
以下のゴールを達成するため、本日は Hasuraの リレーションシップを学んでいきます。
今回はHasuraを使って1対1のリレーションを作る方法を見ていきます。
最終的なゴール
以下のような構成のアプリを作ることです。
目的
- 仕事で使っている技術のキャッチアップと復習
- 使う可能性がある技術の理解度向上
Hasuraのリレーションシップ(1対1)
今回説明するHasuraのリレーションシップ(1対1)の概念図です。
これを実際に、テーブルや関連づけやデータを追加することで実現していきます。
やり方の概要を先に伝えておくと
前回やった、1対多の関係をForeign Key で作成して関係の設定を unique 制限をかければ1対1のリレーションシップはできます。
前回👇
https://qiita.com/ryosuketter/items/59a05d4eb5c715287ded
テーブルの作成とデータの追加
users
テーブル以外に、profiles
テーブルを作成します。
続いて、データを追加します。
いつものように、「Insert Rows」で2つ作成して、「Browse Rows」で確認します。
では、次は、profiles
テーブルとusers
テーブルを1対1で連携させていきます。
テーブル同士の関連づけ
profiles
テーブルとusers
テーブルを1対多の関係で関連づけます。
users
テーブルに行って、Modifyを選んで、新しいカラムを作成します。
Foreign Keyの設定
Add Foreign Keysしてください。
Relationshipsタブにいきます
users
Nameはprofile
のまま、Saveします。
profiles
Nameはuser
のまま、Saveします。
これで、profiles
テーブルとusers
テーブルを1対1で連携できました。
データを追加していきましょう。
データの追加
usersテーブルから見ると
-
users.name
= john のprofile_id
にprofiles.nickname
= Jon のprofiles.id
を -
users.name
= bob のprofile_id
にprofiles.nickname
= bobby のprofiles.id
を
割り当てていきましょう
関連づけました。
クエリで確認しましょう
usersから見る
profilesから見る
本日は以上です。
次回以降で、また別のHasuraのリレーションシップ(多対多を)見ていきます!
参考
アウトプット100本ノック実施中