[英]Laravel Lighthouse Graphql belongsToMany mutation with pivot values
[英]Laravel Lighthouse retrieving pivot data
我正在使用 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('App\Models\Tenant\User', 'user_id');
}
public function company(): BelongsTo {
return $this->belongsTo('App\Models\Tenant\Company', '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
类的情况下操作数据透视表。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.