Внешний ключ в исходной структуре?

Я начинаю с Горма и пытаюсь смоделировать следующее:

type MyLink struct {
    gorm.Model
    Title             string
    Url               string
}

// group of links under a single title
type MyLinkSection struct {
    gorm.Model
    Title string
    Links []MyLink
}

type MyPage struct {
    gorm.Model
    PageUrl     MyLink
    Artists     []MyLinkSection
}

Как видите, я хочу иметь возможность ссылаться на одну и ту же структуру MyLink как на объект с внешним ключом из MyPage, так и как на объект «один ко многим» из MyLinkSection.

Кажется, я должен объявить ID внешнего ключа в MyLink, что, казалось бы, делает это невозможным.

Есть ли способ настроить такие таблицы? В обычной БД у меня было бы поле в MyPage с именем my_link_id, с чем-то похожим для MyLinkSection.


person jbrown    schedule 23.07.2017    source источник


Ответы (1)


Кажется, можно указать форвардные отношения:

PageUrl       MyLink `gorm:"ForeignKey:PageUrlId"`      
PageUrl Id    uint
person jbrown    schedule 23.07.2017
comment
В настоящее время это не работает: это объявление не создает никаких FK. - person FGM; 09.05.2019