我正在使用Bookshelf refresh
方法来刷新模型,但我在这里遇到了一个奇怪的问题。我有两个表device
和subscription
,它们有一对一的关系。我有一个方法(让我们称之为foo),我正在尝试refresh
subscription
模型。现在,当我打电话给foo()
时,我有两种不同的情况。
1
在这种情况下,我使用foo()
模型调用subscription
,该模型看起来像这样
{ user_id: 10289,
id: 1179,
more columns...
}
当我尝试刷新此subscription
模型时,它会按预期运行,但我不会收到任何错误。
2
在这种情况下,我首先与device
一起获取subscription
,如此Device.forge().fetch({withRelated: ['subscription']})
。然后我用foo()
模型调用subscription
,看起来像这样
{ user_id: 10289,
id: 1179,
more columns...,
device: {
id: 17093,
user_id: 10289,
subscription_id: 1179,
more columns...
}
}
当我在此尝试refresh
subscriotion
模型时,我收到错误
Undefined binding(s) detected when compiling SELECT query: select "subscriptions".* from "subscriptions" where "subscriptions"."id" = ? and "subscriptions"."id" = ? limit ?
由于某些原因,生成的查询在subscription_id
子句中需要两个where
,其中一个是undefined
。
我的问题是为什么查询在第二种情况下有两个subscription_id
?当没有refresh
模型与device
模型一起出现时,为什么subscription
按预期工作?
非常感谢任何澄清这一点的帮助。谢谢。