logologo
Mulai
Panduan
Pengembangan
Plugin
API
English
简体中文
日本語
한국어
Deutsch
Français
Español
Português
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
Mulai
Panduan
Pengembangan
Plugin
API
logologo
Ikhtisar API

@nocobase/auth

AuthManager
Auth
BaseAuth

@nocobase/cache

CacheManager
Cache

@nocobase/cli

NocoBase CLI
Variabel Lingkungan Global

@nocobase/client

Aplikasi
plugin

@nocobase/database

Koleksi
Bidang

interfaces

BaseInterface
Operator Filter

RelationRepository

BelongsToManyRepository
belongs-to-repository
HasManyRepository
HasOneRepository
Repositori

shared

create-options
destroy-options
find-one
find-options
transaction
update-options

@nocobase/data-source-manager

DataSourceManager
DataSource (abstrak)
ICollectionManager
ICollection
IField
IModel
IRepository

@nocobase/flow-engine

Manajer Sumber Data
FlowContext
FlowEngine
FlowModel
Sumber Daya Alur Kerja

@nocobase/logger

Logger

@nocobase/server

AppCommand
Aplikasi
AuditManager
Konteks
Migrasi
Plugin

@nocobase/sdk

Auth
Penyimpanan
Previous PageRelationRepository
Next Pagebelongs-to-repository
TIP

Dokumen ini diterjemahkan oleh AI. Untuk ketidakakuratan apa pun, silakan lihat versi bahasa Inggris

#BelongsToManyRepository

BelongsToManyRepository adalah sebuah Relation Repository yang digunakan untuk menangani hubungan BelongsToMany.

Berbeda dengan jenis hubungan lainnya, hubungan BelongsToMany perlu dicatat melalui tabel perantara (junction table). Saat mendefinisikan hubungan asosiasi di NocoBase, tabel perantara dapat dibuat secara otomatis, atau Anda dapat menentukannya secara eksplisit.

#Metode Kelas

#find()

Mencari objek terkait (associated objects).

Tanda Tangan

  • async find(options?: FindOptions): Promise<M[]>

Detail

Parameter kueri (query parameters) konsisten dengan Repository.find().

#findOne()

Mencari objek terkait, hanya mengembalikan satu rekaman.

Tanda Tangan

  • async findOne(options?: FindOneOptions): Promise<M>

#count()

Mengembalikan jumlah rekaman yang sesuai dengan kondisi kueri.

Tanda Tangan

  • async count(options?: CountOptions)

Tipe

interface CountOptions
  extends Omit<SequelizeCountOptions, 'distinct' | 'where' | 'include'>,
    Transactionable {
  filter?: Filter;
}

#findAndCount()

Mengkueri basis data untuk mendapatkan kumpulan data (dataset) dan jumlah total (count) berdasarkan kondisi tertentu.

Tanda Tangan

  • async findAndCount(options?: FindAndCountOptions): Promise<[any[], number]>

Tipe

type FindAndCountOptions = CommonFindOptions;

#create()

Membuat objek terkait.

Tanda Tangan

  • async create(options?: CreateOptions): Promise<M>

#update()

Memperbarui objek terkait yang memenuhi kondisi.

Tanda Tangan

  • async update(options?: UpdateOptions): Promise<M>

#destroy()

Menghapus objek terkait yang memenuhi kondisi.

Tanda Tangan

  • async destroy(options?: TargetKey | TargetKey[] | DestroyOptions): Promise<Boolean>

#add()

Menambahkan objek terkait baru.

Tanda Tangan

  • async add( options: TargetKey | TargetKey[] | PrimaryKeyWithThroughValues | PrimaryKeyWithThroughValues[] | AssociatedOptions ): Promise<void>

Tipe

type PrimaryKeyWithThroughValues = [TargetKey, Values];

interface AssociatedOptions extends Transactionable {
  tk?:
    | TargetKey
    | TargetKey[]
    | PrimaryKeyWithThroughValues
    | PrimaryKeyWithThroughValues[];
}

Detail

Anda dapat langsung meneruskan targetKey dari objek terkait, atau meneruskan targetKey beserta nilai-nilai kolom dari tabel perantara.

Contoh

const t1 = await Tag.repository.create({
  values: { name: 't1' },
});

const t2 = await Tag.repository.create({
  values: { name: 't2' },
});

const p1 = await Post.repository.create({
  values: { title: 'p1' },
});

const PostTagRepository = new BelongsToManyRepository(Post, 'tags', p1.id);

// Meneruskan targetKey
PostTagRepository.add([t1.id, t2.id]);

// Meneruskan kolom tabel perantara
PostTagRepository.add([
  [t1.id, { tagged_at: '123' }],
  [t2.id, { tagged_at: '456' }],
]);

#set()

Mengatur objek terkait.

Tanda Tangan

  • async set( options: TargetKey | TargetKey[] | PrimaryKeyWithThroughValues | PrimaryKeyWithThroughValues[] | AssociatedOptions, ): Promise

Detail

Parameter sama dengan add().

#remove()

Menghapus hubungan asosiasi dengan objek yang diberikan.

Tanda Tangan

  • async remove(options: TargetKey | TargetKey[] | AssociatedOptions)

Tipe

interface AssociatedOptions extends Transactionable {
  tk?: TargetKey | TargetKey[];
}

#toggle()

Mengubah status objek terkait (toggle associated objects).

Dalam beberapa skenario bisnis, seringkali diperlukan untuk mengubah status objek terkait. Misalnya, pengguna dapat memfavoritkan suatu produk, membatalkan favorit, dan memfavoritkan kembali. Metode toggle dapat digunakan untuk mengimplementasikan fungsionalitas serupa dengan cepat.

Tanda Tangan

  • async toggle(options: TargetKey | { tk?: TargetKey; transaction?: Transaction }): Promise<void>

Detail

Metode toggle secara otomatis memeriksa apakah objek terkait sudah ada. Jika ada, objek akan dihapus; jika tidak ada, objek akan ditambahkan.