Laravel Lighthouse正在检索数据透视图



我正在使用Laravel Lighthouse v4.16为我的项目编写API。大多数突变和查询都能正常工作。但是,当我尝试查询透视数据时,结果表明所有透视数据都为空。

所以我们有3个不同的模型,我只展示导致问题的关系

用户

public function companies(): BelongsToMany {
return $this->belongsToMany(Company::class)
->using(CompanyUser::class)
->withPivot(
'personnel_number',
);
}

公司

public function users(): BelongsToMany {
return $this->belongsToMany(User::class)->withPivot(
'personnel_number',
)->using(CompanyUser::class);
}

CompanyUser-扩展枢轴

public function user(): BelongsTo {
return $this->belongsTo('AppModelsTenantUser', 'user_id');
}
public function company(): BelongsTo {
return $this->belongsTo('AppModelsTenantCompany', 'company_id');
}

这些在Graphql中表示为以下类型

type User {
id: ID!
title: String
companies: [Company!] @belongsToMany
pivot: CompanyUser
}
type Company {
id: ID!
name: String
users: [User] @belongsToMany
}
type CompanyUser {
id: ID!
personnel_number: String
user: User! @belongsTo
company: Company! @belongsTo
}

但是,当我运行以下查询时,关系被成功检索,但数据透视仍然为空。

{
user(id: 1) {
id
first_name
companies {
id
name
}
pivot {
personnel_number
}
}
}

该查询的结果看起来像下面的结果

{
"data": {
"user": {
"id": "1",
"first_name": "Mike",
"companies": [
{
"id": "1",
"name": "company_name_1"
}
],
"pivot": null
}
}
}

问题是pivot在查询中的位置,pivot应该在一个关系中(即:它将在进行表的联接以加载关系后加载(。

因此,为了实现这一点,你需要做出这些改变:

类型中的
type Company {
id: ID!
name: String
users: [User] @belongsToMany
pivot: CompanyUser # add
}
查询中的
{
user(id: 1) {
id
first_name
companies {
id
name
pivot { # moved here, inside companies relations
personnel_number
}
}
}
}

备注:您可以在没有CompanyUser类的情况下操作透视数据

最新更新