はじめに
以下のゴールを達成するため、本日は Hasuraの リレーションシップを学んでいきます。
最終的なゴール
以下のような構成のアプリを作ることです。
目的
- 仕事で使っている技術のキャッチアップと復習
- 使う可能性がある技術の理解度向上
Hasuraのリレーションシップ(1対多)
今回説明するHasuraのリレーションシップ(1対多)の概念図です。
これを実際に、テーブルや関連づけやデータを追加することで実現していきます。
テーブルの作成とデータの追加
users
テーブル以外に、groups
テーブルを作成します。
Add table
テーブル同士の関連づけ
groups
テーブルとusers
テーブルを1対多の関係で関連づけます。
users
テーブルに行って、Modifyを選んで、新しいカラムを作成します。
Foreign Keyの設定
users
テーブルに行って、ModifyにあるForeign Keyの設定をします。
users
テーブルのRelationshipsに行くと、
user.group_id から group.id に対してObject Relationshipsのサジェストがされている。
ユーザーは1つのグループにしか属せないとすると、1対1の関係だからでしょう。
Addボタンを押すと、その通りの関連付けがなされます。
group.id から user.group_id に対してはどうでしょうか?
グループは、複数のユーザーと関連が持てますよね。
groups
テーブルのRelationshipsに行くと、Array Relationshipsのサジェストがされていますね。
これで、1対多の関連づけが完了しました。
データを追加していきましょう。
データの追加
usersテーブルから見ると
新しくカラムが追加されていることがわかりますね。
クエリを実行すると、usersテーブルのgroup_id と groupsのidが1対1の関係であることがわかります。
Object Relationshipsという名前も納得ですね。
groupsテーブルから見ると
Array Relationshipsという名前も納得ですね。
本日は以上です。
次回以降で、また別のHasuraのリレーションシップ(1対1や多対多を)見ていきます!
参考
アウトプット100本ノック実施中