0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Hasuraのリレーションシップ(1対多)

Last updated at Posted at 2021-10-18

はじめに

以下のゴールを達成するため、本日は Hasuraの リレーションシップを学んでいきます。

最終的なゴール

以下のような構成のアプリを作ることです。

スクリーンショット 2021-10-18 17.27.41.png

目的

  • 仕事で使っている技術のキャッチアップと復習
  • 使う可能性がある技術の理解度向上

Hasuraのリレーションシップ(1対多)

今回説明するHasuraのリレーションシップ(1対多)の概念図です。

スクリーンショット 2021-10-19 2.08.26.png

これを実際に、テーブルや関連づけやデータを追加することで実現していきます。

テーブルの作成とデータの追加

usersテーブル以外に、groupsテーブルを作成します。

スクリーンショット 2021-10-19 1.00.31.png

Add table

スクリーンショット 2021-10-19 1.22.48.png

テーブル同士の関連づけ

groupsテーブルとusersテーブルを1対多の関係で関連づけます。

usersテーブルに行って、Modifyを選んで、新しいカラムを作成します。

Modify_-users-_Data___Hasura.png

Modify_-users-_Data___Hasura.png

Foreign Keyの設定

usersテーブルに行って、ModifyにあるForeign Keyの設定をします。

Modify_-users-_Data___Hasura.png

usersテーブルのRelationshipsに行くと、

user.group_id から group.id に対してObject Relationshipsのサジェストがされている。

ユーザーは1つのグループにしか属せないとすると、1対1の関係だからでしょう。

Relationships_-users-_Data___Hasura.png

Addボタンを押すと、その通りの関連付けがなされます。

Relationships_-users-_Data___Hasura.png

group.id から user.group_id に対してはどうでしょうか?

グループは、複数のユーザーと関連が持てますよね。

groupsテーブルのRelationshipsに行くと、Array Relationshipsのサジェストがされていますね。

Relationships_-groups-_Data___Hasura.png

これで、1対多の関連づけが完了しました。

データを追加していきましょう。

データの追加

Browse_-users-_Data___Hasura.png

Browse_-users-_Data___Hasura.png

usersテーブルから見ると

新しくカラムが追加されていることがわかりますね。

クエリを実行すると、usersテーブルのgroup_id と groupsのidが1対1の関係であることがわかります。

API_Explorer___Hasura.png

Object Relationshipsという名前も納得ですね。

groupsテーブルから見ると

API_Explorer___Hasura.png

Array Relationshipsという名前も納得ですね。

本日は以上です。

次回以降で、また別のHasuraのリレーションシップ(1対1や多対多を)見ていきます!

参考

アウトプット100本ノック実施中

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?