Я бью дорожный блок с предварительной загрузкой и ассоциациями
type Entity struct {
ID uint `gorm:"primary_key"`
Username string
Repositories []*Repository `gorm:"many2many:entity_repositories"`
}
type Repository struct {
ID uint `gorm:"primary_key"`
Name string
Entities []*Entity `gorm:"many2many:entity_repositories"`
}
С небольшими номерами пользователей предварительная загрузка в порядке, используя ниже
db.Preload("Repositories").Find(&list)
Также пробовал
db.Model(&User{}).Related(&Repository{}, "Repositories").Find(&list)
Предварительная загрузка выглядит как select * entities
, а затем внутреннее соединение с использованием SELECT * FROM "repositories" INNER JOIN "entity_repositories" ON "entity_repositories"."repository_id" = "repositories"."id" WHERE ("entity_repositories"."entity_id" IN ('1','2','3','4','5','6','7','8','9','10'))
По мере увеличения количества пользователей это больше не поддерживается, поскольку достигает лимита sqlite (dev). Я пробовал многочисленные перестановки! .. Реально я думаю, я просто хочу, чтобы это было что-то вроде
SELECT entities.*, repositories.*
FROM entities
JOIN entity_repositories ON entity_repositories.entity_id = entities.id
JOIN repositories ON repositories.id = entity_repositories.repository_id
ORDER BY entities.id
И заполните модель для меня ..
Я делаю что-то явно неправильно или?