将 2 个表中的数据合并为一个 class
join data from 2 tables into one class
我需要一些数据库帮助。
我有以下表格:
我需要使用 EventType Table 中的数据提取一个 Event 以分配一个 EventType 链接到用户的 Event。
我正在使用 Moor,它们适合连接,我只需要一些查询方面的帮助。目前我一直在尝试这个:
Stream<EventWithType> eventWithType(EventData eventTypeId) {
final query = select(event)
..where((tbl) {
return tbl.id.equals(eventTypeId.id);
})
..join([
innerJoin(eventType, eventType.id.equals(eventTypeId.eventTypeId)),
]);
}
EventWithType.dart
class EventWithType {
final EventData event;
final EventTypeData eventTypeData;
EventWithType(this.event, this.eventTypeData);
}
但我知道我做错了什么我只是不确定如何进行联接,或者即使我使用的是正确的联接?
TIA
x10xion
假设我们有名为 events、eventTypes 和 users 的表,我们可以将连接写为:
Stream<JoinedEvent> getJoinedEvent(eventId) {
final query = (select(events)
..whereSamePrimaryKey(EventsCompanion(id: Value(eventId))))
.join([
innerJoin(eventTypes, eventTypes.id.equalsExp(events.eventTypeId)),
innerJoin(users, users.id.equalsExp(events.userId)),
]);
return query.watchSingle().map((typedResult) {
return JoinedEvent(
event: typedResult.readTable(events),
user: typedResult.readTable(users),
eventType: typedResult.readTable(eventTypes),
);
});
}
与:
class JoinedEvent {
final Event event;
final EventType eventType;
final User user;
JoinedEvent ({this.event, this.eventType, this.user});
}
我需要一些数据库帮助。
我有以下表格:
我需要使用 EventType Table 中的数据提取一个 Event 以分配一个 EventType 链接到用户的 Event。
我正在使用 Moor,它们适合连接,我只需要一些查询方面的帮助。目前我一直在尝试这个:
Stream<EventWithType> eventWithType(EventData eventTypeId) {
final query = select(event)
..where((tbl) {
return tbl.id.equals(eventTypeId.id);
})
..join([
innerJoin(eventType, eventType.id.equals(eventTypeId.eventTypeId)),
]);
}
EventWithType.dart
class EventWithType {
final EventData event;
final EventTypeData eventTypeData;
EventWithType(this.event, this.eventTypeData);
}
但我知道我做错了什么我只是不确定如何进行联接,或者即使我使用的是正确的联接?
TIA x10xion
假设我们有名为 events、eventTypes 和 users 的表,我们可以将连接写为:
Stream<JoinedEvent> getJoinedEvent(eventId) {
final query = (select(events)
..whereSamePrimaryKey(EventsCompanion(id: Value(eventId))))
.join([
innerJoin(eventTypes, eventTypes.id.equalsExp(events.eventTypeId)),
innerJoin(users, users.id.equalsExp(events.userId)),
]);
return query.watchSingle().map((typedResult) {
return JoinedEvent(
event: typedResult.readTable(events),
user: typedResult.readTable(users),
eventType: typedResult.readTable(eventTypes),
);
});
}
与:
class JoinedEvent {
final Event event;
final EventType eventType;
final User user;
JoinedEvent ({this.event, this.eventType, this.user});
}