使用@Relate和唯一

时间:2019-06-06 14:23:05

标签: dart aqueduct

如何使用渡槽ORM使用“关联”和“唯一”?

在我的代码中,我希望userapp是唯一的? 如果我尝试放@Column(unique: true),则会收到如下错误:

  

***“ _Professional”上的关系“ userapp”不能同时具有“ Column”和“ Relate”元数据。为索引添加标志或   关系的可空性,请参见“相关”的构造函数。

我的下面的代码:

class Professional extends ManagedObject<_Professional> implements _Professional {}

class _Professional {

  @primaryKey
  int id;
  @Relate(#professionals)
  Userapp userapp;
  @Column(defaultValue: 'true')
  bool active;  

  ManagedSet<ProfessionalSpecialty> professionalSpecialties;

}

1 个答案:

答案 0 :(得分:1)

userapp下方的外键列是否唯一,由反向关系属性确定。在这种情况下,倒数是Userapp.professionals

如果Userapp.professionals的类型为Professional,则将唯一约束添加到userapp;这是“一对一”的关系。

如果Userapp.professionals的类型为ManagedSet<Professional>,则不应用唯一约束;这是“多对多”的关系。

我猜想是因为您使用的是复数形式(professionals),所以您要声明ManagedSet<Professional>。更改_Userapp表定义中的声明,并确保您在_Professional中的逆匹配:

class _Userapp {
  ...
  Professional professional;
}
class _Professional {
  ...
  @Relate(#professional)
  Userapp userapp;

}