首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel Lighthouse检索透视数据

Laravel Lighthouse检索透视数据
EN

Stack Overflow用户
提问于 2020-10-08 03:24:26
回答 1查看 150关注 0票数 0

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

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

用户

代码语言:javascript
复制
public function companies(): BelongsToMany {
    return $this->belongsToMany(Company::class)
        ->using(CompanyUser::class)
        ->withPivot(
            'personnel_number',
        );
}

公司

代码语言:javascript
复制
public function users(): BelongsToMany {
   return $this->belongsToMany(User::class)->withPivot(
      'personnel_number',
   )->using(CompanyUser::class);
}

CompanyUser -扩展枢轴

代码语言:javascript
复制
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中表示为以下类型

代码语言:javascript
复制
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
}

但是,当我运行下面的查询时,关系被成功地检索到了,但是透视图仍然为空。

代码语言:javascript
复制
{
 user(id: 1) {
    id
    first_name
    companies {
      id
      name
    }
    pivot {
      personnel_number
    }
  }
}

查询结果如下所示

代码语言:javascript
复制
{
  "data": {
    "user": {
      "id": "1",
      "first_name": "Mike",
      "companies": [
        {
          "id": "1",
          "name": "company_name_1"
        }
      ],
      "pivot": null
     }
   }
}
EN

回答 1

Stack Overflow用户

发布于 2020-12-04 04:01:28

问题是查询中pivot的位置,pivot应该在关系中(即:它将在表的连接之后加载关系)。

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

类型中的

代码语言:javascript
复制
type Company {
    id: ID!
    name: String

    users: [User] @belongsToMany
    pivot: CompanyUser # add
}

查询中的

代码语言:javascript
复制
{
  user(id: 1) {
    id
    first_name
    companies {
      id
      name
      pivot { # moved here, inside companies relations
        personnel_number
      }
    }
  }
}

重塑:您可以在没有CompanyUser类的情况下操作透视数据。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64250969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档