如何使用 objectbox dart 定义 @freezed 实体内部的关系?
How to define relations inside @freezed entity with objectbox dart?
通过关注 this
我有一个 CurrentUser
实体如下:
import 'package:admin/core/auth/enums/content_type.dart';
import 'package:admin/core/permission/model/permission.dart';
import 'package:freezed_annotation/freezed_annotation.dart';
import 'package:objectbox/objectbox.dart';
part 'current_user.freezed.dart';
part 'current_user.g.dart';
@freezed
class CurrentUser with _$CurrentUser {
@Entity(realClass: CurrentUser)
factory CurrentUser(
{@Id(assignable: true) int? localId,
@Unique() String? id,
required DateTime createdAt,
required DateTime updatedAt,
required String email,
required String username,
String? mobile,
@Default(false) bool? isEmailConfirmed,
@Default(false) bool? isMobileConfirmed,
@Default(false) bool? isSuperAdmin,
@Default([]) List<ContentType>? accessTo,
DateTime? lastLoginAt,
DateTime? lastLogoutAt,
@Default([]) List<Permission>? permissions}) = _CurrentUser;
factory CurrentUser.fromJson(Map<String, dynamic> json) =>
_$CurrentUserFromJson(json);
}
但是这里的字段permissions
应该是与模型Permission
的一对多关系。在这种情况下如何定义关系?
提前致谢。
您实际上会使用 ToMany
(或 ToOne
)作为参数类型,因此
required ToMany<Permission> permissions
对于这个例子。 ToMany
(或ToOne
)在这种情况下有一个特殊的构造函数,它接受项目列表(或 ToOne
的单个项目)。
另请参阅 objectbox-dart 中的冻结测试实体:https://github.com/objectbox/objectbox-dart/blob/main/generator/integration-tests/part-partof/lib/frozen.dart
通过关注 this
我有一个 CurrentUser
实体如下:
import 'package:admin/core/auth/enums/content_type.dart';
import 'package:admin/core/permission/model/permission.dart';
import 'package:freezed_annotation/freezed_annotation.dart';
import 'package:objectbox/objectbox.dart';
part 'current_user.freezed.dart';
part 'current_user.g.dart';
@freezed
class CurrentUser with _$CurrentUser {
@Entity(realClass: CurrentUser)
factory CurrentUser(
{@Id(assignable: true) int? localId,
@Unique() String? id,
required DateTime createdAt,
required DateTime updatedAt,
required String email,
required String username,
String? mobile,
@Default(false) bool? isEmailConfirmed,
@Default(false) bool? isMobileConfirmed,
@Default(false) bool? isSuperAdmin,
@Default([]) List<ContentType>? accessTo,
DateTime? lastLoginAt,
DateTime? lastLogoutAt,
@Default([]) List<Permission>? permissions}) = _CurrentUser;
factory CurrentUser.fromJson(Map<String, dynamic> json) =>
_$CurrentUserFromJson(json);
}
但是这里的字段permissions
应该是与模型Permission
的一对多关系。在这种情况下如何定义关系?
提前致谢。
您实际上会使用 ToMany
(或 ToOne
)作为参数类型,因此
required ToMany<Permission> permissions
对于这个例子。 ToMany
(或ToOne
)在这种情况下有一个特殊的构造函数,它接受项目列表(或 ToOne
的单个项目)。
另请参阅 objectbox-dart 中的冻结测试实体:https://github.com/objectbox/objectbox-dart/blob/main/generator/integration-tests/part-partof/lib/frozen.dart