如何根据其关系过滤字段的查找方法?

问题描述

我的应用程序的结构是:

  • 联系人
  • 群组
  • 车道(属于组)
  • GroupContacts(加入表以将联系人分配给组并分配通道)

我的实体是:

lane.entity.ts

import {
  Entity,Column,PrimaryGeneratedColumn,ManyToOne,Unique,OnetoMany,} from 'typeorm';
import { Group } from './group.entity';
import { GroupContact } from './groupcontact.entity';

@Entity('lanes')
@Unique('UQ_NAMES',['group','name'])
export class Lane {
  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  name: string;

  @Column()
  sequence: number;

  @Column({ nullable: false,default: 30 })
  updateFrequencyDays: number;

  @Column({
    nullable: false,default: () => 'CURRENT_TIMESTAMP',type: 'timestamp',})
  createdAt: Date;

  @ManyToOne(
    type => Group,group => group.lanes,)
  group: Group;

  @OnetoMany(
    type => GroupContact,groupcontact => groupcontact.lane,)
  groupContacts: GroupContact[];
}

groupcontact.entity.ts

import { Contact } from '../contacts/contact.entity';
import { Entity,PrimaryColumn,JoinColumn } from 'typeorm';
import { Group } from './group.entity';
import { Lane } from './lane.entity';

@Entity('groups_contacts')
export class GroupContact {
  @PrimaryColumn()
  groupId: number;

  @PrimaryColumn()
  contactId: number;

  @Column()
  laneId: number;

  @Column({
    nullable: false,group => group.contactConnection,)
  @JoinColumn({ name: 'groupId' })
  group: Group;

  @ManyToOne(
    type => Contact,contact => contact.groupConnection,)
  @JoinColumn({ name: 'contactId' })
  contact: Contact;

  @ManyToOne(
    type => Lane,lane => lane.groupContacts,)
  @JoinColumn({ name: 'laneId' })
  lane: Lane;
}

contact.entity.ts

import { Group } from 'src/groups/group.entity';
import { GroupContact } from '../groups/groupcontact.entity';
import {
  Entity,JoinTable,ManyToMany,} from 'typeorm';

@Entity('contacts')
export class Contact {
  @PrimaryGeneratedColumn()
  public id: number;

  @Column()
  public firstName: string;

  @Column()
  public lastName: string;

  @Column({
    nullable: false,})
  public createdAt: Date;

  @OnetoMany(
    type => GroupContact,gc => gc.contact,)
  groupConnection: GroupContact[];
}

要做的是尝试返回属于特定组的所有联系人。但是在返回这些联系人时,我还想返回 groupConnection 对象。

这是我使用的代码

   async getContacts(groupId) {
    const group = await this.findOneByIdOrThrow(groupId);
    const contacts = await this.contactRepository.find({
      //where: { groupConnection: { groupId: groupId } },relations: ['groupConnection'],});

    return contacts;
  }

到目前为止,我是否能够返回我想要的,这是一个联系人列表以及他们的关系。但我还没有找到一种方法来过滤这些结果以仅检索属于特定 groupId 的那些。

Where 子句已注释。

我该如何过滤?

解决方法

我可以使用 QueryBuilder 修复它

<img />

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...