次のようにできることがわかりました。
まず、User
モデル内のリレーションが を呼び出すことを確認して->withPivot('created_at', 'tag_id')
ください:
class User extends Model {
public function roles(): BelongsToMany
{
return $this->belongsToMany(\App\Models\Role::class, 'User_Role')
->using(User_Role::class) // only needed to retrieve the tag from the tag_id
->withPivot('created_at', 'tag_id');
}
}
を拡張する中間テーブルのクラスを作成しますPivot
。
class User_Role extends Pivot
{
public function tag(): BelongsTo
{
return $this->belongsTo(\App\Models\Tag::class, 'tag_id');
}
}
GraphQL コードを次のように変更します。
type User {
id: ID!
roles: [Role!] @belongsToMany
}
type Role {
id: ID!
pivot: UserRolePivot # this is where the magic happens
}
type UserRolePivot {
created_at: Date!
tag: Tag! @belongsTo
}
type Tag {
id: ID!
name: String!
}
これで、次のようにクエリを実行できます。
{
users {
id
roles {
id
pivot {
created_at
tag {
id
name
}
}
}
}
}