PHP エディタ Banana の紹介によると、GORM は人気のある Go 言語の ORM ライブラリであり、便利なデータベース操作方法を提供します。ただし、GORM はすべてのデータ型をサポートしているわけではなく、特定のデータ型を処理するときに誤ったスキーマが発生する可能性があります。つまり、GORM を使用する場合、開発者はサポートされているデータ型を使用することと、潜在的な問題を回避するためにデータ スキーマが正しいことを確認することに注意する必要があります。 GORM は強力ですが、これらの制限があるため、開発者は使用する際に注意して扱う必要があります。
gorm v1.25.1、worker
、poster
、job
モデルで実行してみましたdb.automerge()
を実行しましたが、[エラー] サポートされていないデータ型: &[]
が発生しました。ワーカーとジョブ構造は 多対多の関係
を持つ必要があり、投稿者とジョブは 1 対多
の関係を持つ必要があります。ワーカーと経験、ワーカーと好みはすべて 1 対多
の関係である必要があります。助けてください。
package model type experience struct { gorm.Model Company int `json:"company"` JobTitle string `json:"jobTitle"` WorkerID uint } type preference struct { gorm.Model JobTitle string `json:"JobTitle"` MinPay int `json:"minPay"` MaxPay int `json:"maxPay"` WorkerID uint } type Worker struct { gorm.Model Username string `gorm:"uniqueIndex;not null" json:"username"` ...more fields Experience []experience `json:"experience"` Preference []preference `json:"preference"` AppliedJobs []Job `gorm:"many2many:worker_jobs;" json:"appliedJobs"` } type Poster struct { gorm.Model Name string `gorm:"uniqueIndex;not null" json:"name"` Email string `gorm:"uniqueIndex;not null" json:"email"` Phone string `json:"phone"` JobsPosted []Job `json:"jobsPosted"` } type Job struct { gorm.Model Title string `gorm:"uniqueIndex;not null" json:"title"` ...more fields PosterID uint `json:"posterID"` }
次のコードで必要なことを達成できました。
デモンストレーションのために、関連付けの関連フィールドのみを含めることでモデル (構造) を簡略化していることに注意してください。言及する価値のあるものを見逃している場合は、お気軽に質問してください。回答を更新します。
最初にコードを共有してから、詳しく説明します。
リーリーあなたの質問には many2many
と one2many
の両方の関係が含まれているため、回答を 2 つの部分に分けます。
多くの2多くの
関係この関係を実装するには、関連付けられたエンティティを保持するスライスの横に注釈 gorm:"many2many:workers_posters;joinforeignkey:workersid"
を追加する必要があります。影響を受けるフィールドは次のとおりです:
posters
worker
構造体のフィールドworkers
poster
構造体のフィールド明らかに、設定するフィールドに応じて joinforeignkey
の値を変更する必要があります。
one2many
関係 この関係は、many2many
関連付けで作成する必要がある結合テーブル (上で作成した workers_posters
テーブルなど) を指定する必要がないため、さらに単純になります。ここでは、次の 2 つの変更を加えるだけです:
poster
構造に jobs []job
フィールド posterid uint
フィールドを job
構造体 したがって、automerge
メソッドを実行すると、データベース内に正しいテーブルが表示され、すべての外部キーが正しく設定されていることがわかります。
教えてください、ありがとう!
以上がGORM でサポートされていないデータ型: &、間違ったスキーマの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。