模型嵌套的情况,能够直接获取到完整的模型吗?
WCDB.swift v1.0.8 via Cocoapods
在 wiki 中,只有通过 TableCodable 、 CodingKeys 协议 以及 ORM 对基础类型进行映射的示例。 对于模型嵌套的情况(可能存在 一对一、一对多和多对多的表关系), 例如,
struct Person {
var name: String? = nil
var dogs: [Dog]? = nil
}
struct Dog {
var name: String?
var ownerID: Int?
}
这种情况,能够通过某种协议或者模板,直接从数据库获取到完整的person对象实例吗?还是说需要先拿到 person, 然后根据 person 的 id 再去用事务查一次数据库?如果能够直接拿到, how?如果不能, 二次查询有没有一种 best practice 呢?
类似于 #126 和 #178 。@RingoD 大大给出的解释都是参照 Column Coding。实际上 dog 并不是 person 表的一列,而是另外一个表, column coding 还能够适用吗? 希望有大大解惑哈。 另外多谢开源这么棒的库🌸🌸🌸
wcdb的orm只支持一层,嵌套需要联表的情况只能自己二次查询了,dogs是person的数组的时候定义column coding没有什么用,因为对于数组是用codable/nscoding直接转成data存进dogs列里面的。
所以,要么一把梭,要么自己联表。
swift版本文档的做法是错的,具体要怎么做
swift版本文档的做法是错的,具体要怎么做
Model 里的子 Model 整体存进列里面,不需要为子 Model 建表。
这个我知道,但是序列也是需要方法呀
static var columnType: ColumnType {
return .BLOB
}
required init?(with value: FundamentalValue) {
let data = value.dataValue
guard data.count > 0 else {
return nil
}
}
func archivedValue() -> FundamentalValue {
return FundamentalValue(nil)
}
官方给出是这样的,但是根本行不通
Nested models can only be read in multiple steps.