Help guide for Entgo.io community (https://t.me/entgoru)
edge "promotion" has a field "promotion_id" but it is not holding a foreign key (ent/ent#1417)
- Это особенность ent, когда нет нормальной возможности сделать O2O, в таком случае технически проще описать схему как M2M без ключей Unique у полей в schema и только в этом случае ошибки не будет, иначе сущности со связями будут уникальными и создать вторую и более связь будет невозможно
Error: loading schema: entc/load: no schema found in: (ent/ent#3864 or another)
- На данный момент ent не поддерживает go версии 1.22, с высокой долей вероятности у вас либо сам компилятор версии 1.22, либо проект. Откатитесь до 1.21.7 и все заработает :)
entc/load: schema "Entity": mixin "IDMixin": field "id": expect type (func() uuid.UUID) for uuid default value
- Ошибка возникает из-за уже сгенерированных файлов ent с ошибками, необходимо убрать поле Default, запустить go generate, затем снова добавить поле Default, и снова запустить go generate ... , после этого ошибка исчезнет.
func (UserGroup) Annotations() []schema.Annotation {
return []schema.Annotation{
entsql.PrimaryKey("user_id", "group_id")
}
}
func (UserGroup) Fields() []ent.Field {
return []ent.Field{
field.Int("user_id"),
field.Int("group_id"),
}
}
- Можно подобрать генерируемое значение поля, первая часть слова будет браться от таблицы, которая является псевдовладельцем сущности-связи, то есть, если мы привязываем яблоки к магазину, то колонка будет названа минимум shop_ и тд
- Второй и более гранулярный - завести поле Ent в Fields чтобы тип идентификатора связываемой сущности совпадал с ним и указать что-то подобное
edge.
From("shop", Shop.Type).
Ref("fruit_shop").
Field("fruit_id").
Unique().
Required(),