フリーランス 技術調査ブログ

フリーランス/エンジニア Ruby Python Nodejs Vuejs React Dockerなどの調査技術調査の備忘録

strapiのリレーション設定

はじめに

  • 昨日、作成した住所データに関連するテーブルを作成してリレーションの設定を行う

px-wing.hatenablog.com

リレーションの設定

  • content_typeでフィールドを追加する際に「Relation」という項目があるので、そちらを選択する f:id:PX-WING:20201213000535p:plain

  • リレーションの種類を選択する。選択すると中間テーブルが作成されてリレーションすることが可能となる f:id:PX-WING:20201212235426p:plain

(参考URL) strapi.io

  • リレーション設定するとフィールドに追加されていることが確認できる。 f:id:PX-WING:20201212235055p:plain

  • 中間テーブルが作成されていることをが確認できる。 f:id:PX-WING:20201213001136p:plain

  • 管理画面のリレーションの設定は下記のように設定することができる。 f:id:PX-WING:20201213000144p:plain

APIの実行結果

  • リレーションがされた状態でAPIの結果が戻ってきるので、正しくリレーションされていることを確認することができました。
  • jsonフィールドも使える。ただし、データベースの型は「longtext」フィールドとして作成される
http://localhost:1337/addresses?post_code=2750016

[
    {
        "id": 34910,
        "post_code": "2750016",
        "prefectures": "千葉県",
        "city_name": "習志野市",
        "town_name": "津田沼",
        "published_at": "2020-12-11T12:21:36.000Z",
        "created_at": "2020-12-11T12:18:07.000Z",
        "updated_at": "2020-12-11T12:18:07.000Z",
        "area_questions": [
            {
                "id": 1,
                "prefectures": "千葉県",
                "questions": {
                    "q1": {
                        "question_title": "千葉県のどこに住んでいますか?",
                        "required": true,
                        "input_type": "text"
                    },
                    "q2": {
                        "question_title": "千葉県どのくらい好きですか?",
                        "required": true,
                        "input_type": "select",
                        "options": {
                            "大好き": "1",
                            "好き": "2",
                            "普通": "3",
                            "嫌い": "4"
                        }
                    },
                    "q3": {
                        "question_title": "性別は?",
                        "required": true,
                        "input_type": "radio",
                        "options": {
                            "男性": "1",
                            "女性": "2"
                        }
                    },
                    "q4": {
                        "question_title": "好きなスポーツはなんですか?",
                        "required": true,
                        "input_type": "checkbox",
                        "options": {
                            "サッカー": "1",
                            "野球": "2",
                            "バスケットボール": "3",
                            "ゴルフ": "4"
                        }
                    }
                },
                "published_at": "2020-12-12T14:52:14.000Z",
                "created_at": "2020-12-12T14:39:31.000Z",
                "updated_at": "2020-12-12T14:53:48.000Z"
            }
        ]
    }
]