Принадлежит Ассоциации Голанг Горм не найден с явным ForeignKey
У меня есть структура торговли примерно так:
type Trade struct {
ID uint
BuyExecution Execution `gorm:"ForeignKey:BuyExecution"`
SellExecution Execution `gorm:"ForeignKey:SellExecution"`
Px int
Shares int
}
И структура выполнения выглядит так:
type Execution struct {
ID uint
Side string
Symbol string
Trade *Trade
}
Схема:
CREATE TABLE `executions` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`side` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`symbol` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`trade_id` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
PRIMARY KEY (`id`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
CREATE TABLE `trades` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`buy_execution_id` int(11) NOT NULL,
`sell_execution_id` int(11) NOT NULL,
`px` int(11) NOT NULL,
`shares` int(11) NOT NULL,
`trade_id` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Тем не менее, при создании исполнений, а затем при обмене с приборами yaml с соответствующими отношениями я получаю сообщение об ошибке:
[2016-06-28 21:17:50] sql: converting Exec argument #0's type: unsupported type models.Execution, a struct
Что указывает на Preload
Звонок я делаю здесь:
var trade Trade
db.Preload("BuyExecution").First(&trade)
Отладка этого была трудной, поэтому пытаюсь получить помощь.
1 ответ
Решение
Определите свой Trade
структура, как это
type Trade struct {
ID uint
BuyExecution Execution `gorm:"ForeignKey:BuyExecutionID"`
BuyExecutionID int
SellExecution Execution `gorm:"ForeignKey:SellExecutionID"`
SellExecutionID int
Px int
Shares int
}
Или даже
type Trade struct {
ID uint
BuyExecution Execution
BuyExecutionID int
SellExecution Execution
SellExecutionID int
Px int
Shares int
}