具有嵌套 hasMany 或 belongsTo 关系的 Ember 模型
Posted
技术标签:
【中文标题】具有嵌套 hasMany 或 belongsTo 关系的 Ember 模型【英文标题】:Ember Model with Nested hasMany or belongsTo relationship 【发布时间】:2016-11-08 23:42:03 【问题描述】:如果您想设置一个具有 belongsTo 或 hasMany 关系的模型,您可以执行以下操作:
export default Model.extend(
"client": DS.belongsTo('client',
async: true
),
"days": attr(''),
"cars": DS.hasMany('car', // somehow nest within days
async: true
)
);
但是,如果我有一个动态表单怎么办?例如,我有一个满是车位的停车场。我创建了一条新记录以将客户分配到我的停车场。然后我开始在一周中的不同日子分配空间。在每个空间内,我想知道在特定时间允许停放哪辆车。
Afaik,JSON 输出应该是这样的:
"client" : "-EADn0NoAq65GRGOU-oQ",
"days" : [
"date" : "2016-11-11",
"times" : [
"when" : "morning",
// want to somehow define a hasmany for which cars are being parked and in which lot number here
]
,
"date" : "2016-11-12",
"times" : [
"when" : "afternoon"
// want to somehow define a hasmany for which cars are being parked and in which lot number here
]
]
看起来就像在模型中,您只定义“***”。您如何定义超出***别的关系?我希望能够访问特定的一天,然后时间...查看哪些汽车停在哪里,并通过 hasMany 关系,然后我可以从另一个模型中的汽车中提取信息...汽车类型,型号,里程、颜色等
【问题讨论】:
创建更多模型 ;) 可能您应该有一个模型day
和一个 time
,在您的根模型上使用 days: hasMany('day')
,然后在当天使用 times: hasMany('time')
。但是,您考虑是否用一个模型来表示具有时间和日期的时间槽可能是一个更好的解决方案。
@lux 我希望有一种“更简单”的方法,因为这可能会创建许多不必要的记录,这些记录不会与其他任何东西相关联或需要自己访问。
好吧,你可以不使用任何转换并输出纯 JSON。但我建议使用模型。
【参考方案1】:
如果我理解正确的话,我会有一个时隙模型。
每个时间段都有一个日期和时间,并且属于一个客户和汽车。 您应该能够在任何给定时间确定哪些汽车在哪里,为哪个客户服务。
模型/timeslot.js
export default Model.extend(
"client": DS.belongsTo('client',
async: true
),
"car": DS.belongsTo('car'),
"bayNumber": DS.attr('number'),
"day": DS.attr('date'),
"time": DS.attr('string')
)
不完全确定这是否是您要查找的内容,但希望对您有所帮助。
【讨论】:
基本上,我想要一个带有按钮的表单,我可以在其中添加停车位,在每天的这些停车位内,我可以添加额外的时间,并且在这些时间内......我可以添加详细信息,包括车主和/或其他型号的特定汽车。 “问题”是创建另一个时隙模型需要我“创建那些记录”,即使它们尚未最终确定。换句话说,如果我们将博客文章与 cmets 进行比较......我想在它们成为属于博客文章的实际“记录”之前添加一堆 cmets。以上是关于具有嵌套 hasMany 或 belongsTo 关系的 Ember 模型的主要内容,如果未能解决你的问题,请参考以下文章
Laravel Eloquent - 使用过滤数据获取嵌套关系
Ember 数据:为啥 hasMany 和 belongsTo
Sequelize.hasMany/belongsTo中的foreignKey是啥意思?