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

@nocobase/auth

AuthManager
Auth
BaseAuth

@nocobase/cache

CacheManager
التخزين المؤقت

@nocobase/cli

NocoBase CLI
متغيرات البيئة العامة

@nocobase/client

التطبيق
إضافة

@nocobase/database

مجموعة
الحقل

interfaces

BaseInterface
عوامل التصفية

RelationRepository

BelongsToManyRepository
belongs-to-repository
HasManyRepository
HasOneRepository
المستودع (Repository)

shared

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

@nocobase/data-source-manager

DataSourceManager
DataSource (تجريدي)
ICollectionManager
ICollection
IField
IModel
IRepository

@nocobase/flow-engine

مدير مصدر البيانات
سياق سير العمل
FlowEngine
FlowModel
مصدر سير العمل

@nocobase/logger

المسجل

@nocobase/server

AppCommand
التطبيق
AuditManager
السياق
الهجرة
إضافة

@nocobase/sdk

Auth
التخزين

@nocobase/telemetry

المقياس
Telemetry
التتبع
Previous PageRelationRepository
Next Pagebelongs-to-repository
إشعار الترجمة بالذكاء الاصطناعي

تمت ترجمة هذه الوثائق تلقائيًا بواسطة الذكاء الاصطناعي.

#BelongsToManyRepository

BelongsToManyRepository هو Relation Repository يُستخدم للتعامل مع علاقات BelongsToMany.

على عكس أنواع العلاقات الأخرى، تتطلب علاقات BelongsToMany التسجيل عبر جدول وسيط (junction table). عند تعريف علاقة ارتباط في NocoBase، يمكن إنشاء جدول وسيط تلقائيًا، أو يمكن تحديده بشكل صريح.

#طرق الفئة

#find()

البحث عن الكائنات المرتبطة

التوقيع

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

التفاصيل

تتوافق معلمات الاستعلام مع Repository.find().

#findOne()

البحث عن كائن مرتبط، وإرجاع سجل واحد فقط

التوقيع

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

#count()

يُرجع عدد السجلات التي تتطابق مع شروط الاستعلام

التوقيع

  • async count(options?: CountOptions)

النوع

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

#findAndCount()

يستعلم قاعدة البيانات عن مجموعة بيانات والعدد الإجمالي تحت شروط محددة.

التوقيع

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

النوع

type FindAndCountOptions = CommonFindOptions;

#create()

إنشاء كائن مرتبط

التوقيع

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

#update()

تحديث الكائنات المرتبطة التي تستوفي الشروط

التوقيع

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

#destroy()

حذف الكائنات المرتبطة التي تستوفي الشروط

التوقيع

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

#add()

إضافة كائنات مرتبطة جديدة

التوقيع

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

النوع

type PrimaryKeyWithThroughValues = [TargetKey, Values];

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

التفاصيل

يمكنك تمرير targetKey للكائن المرتبط مباشرةً، أو تمرير targetKey مع قيم حقول الجدول الوسيط معًا.

مثال

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);

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

// Pass junction table fields
PostTagRepository.add([
  [t1.id, { tagged_at: '123' }],
  [t2.id, { tagged_at: '456' }],
]);

#set()

تعيين الكائنات المرتبطة

التوقيع

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

التفاصيل

المعلمات هي نفسها في add().

#remove()

إزالة الارتباط مع الكائنات المحددة

التوقيع

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

النوع

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

#toggle()

تبديل الكائنات المرتبطة.

في بعض سيناريوهات العمل، غالبًا ما يكون من الضروري تبديل الكائنات المرتبطة. على سبيل المثال، يمكن للمستخدم إضافة منتج إلى المفضلة، ثم إزالته، ثم إضافته مرة أخرى. يمكن استخدام طريقة toggle لتنفيذ هذه الوظيفة بسرعة.

التوقيع

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

التفاصيل

تتحقق طريقة toggle تلقائيًا مما إذا كان الكائن المرتبط موجودًا بالفعل. إذا كان موجودًا، تتم إزالته؛ وإذا لم يكن موجودًا، تتم إضافته.