You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I have two model structs. When I combine these two structs for querying, a problem occurs.
The document you expected this should be explained
type User struct {
ID uuid.UUID `gorm:"primarykey;column:id"`
Name string `gorm:"column:name"`
}
func (User) TableName() string {
return "users"
}
type Order struct {
ID uuid.UUID `gorm:"primarykey;column:id"`
UserID uuid.UUID `gorm:"column:user_id"`
Name string `gorm:"column:name"`
}
func (Order) TableName() string {
return "orders"
}
It is correct when I use the following query. When the order is not matched, nil is returned. Like this user: {31e8f5fe-9848-4088-b786-ff75f1ab7563 user 1} order: <nil>
user, order := &User{}, &Order{}
userTable, orderTable := user.TableName(), order.TableName()
var uo []struct {
User
*Order
}
err = db.Model(user).Select(
userTable+".*, "+orderTable+".*",
).Joins(
"LEFT JOIN "+orderTable+" ON "+userTable+".id = "+orderTable+".user_id",
).Where(userTable+".id = ?", "31e8f5fe-9848-4088-b786-ff75f1ab7563").Scan(&uo)
But when I use the following order struct. When the order is not matched, nil is not returned. Like this user: {31e8f5fe-9848-4088-b786-ff75f1ab7563 user 1} order: &{00000000-0000-0000-0000-000000000000 00000000-0000-0000-0000-000000000000 <nil>}
type Order struct {
ID uuid.UUID `gorm:"primarykey;column:id"`
UserID uuid.UUID `gorm:"column:user_id"`
Name *string `gorm:"column:name"`
}
But *uuid.UUID will still return nil. If it is *string or *int etc., it will not return nil.
Expected answer
I want to know why this is happening. It makes my logic for judging whether the order matches inconsistent.
The text was updated successfully, but these errors were encountered:
Your Question
I have two model structs. When I combine these two structs for querying, a problem occurs.
The document you expected this should be explained
It is correct when I use the following query. When the order is not matched, nil is returned. Like this
user: {31e8f5fe-9848-4088-b786-ff75f1ab7563 user 1} order: <nil>
But when I use the following order struct. When the order is not matched, nil is not returned. Like this
user: {31e8f5fe-9848-4088-b786-ff75f1ab7563 user 1} order: &{00000000-0000-0000-0000-000000000000 00000000-0000-0000-0000-000000000000 <nil>}
But *uuid.UUID will still return nil. If it is *string or *int etc., it will not return nil.
Expected answer
I want to know why this is happening. It makes my logic for judging whether the order matches inconsistent.
The text was updated successfully, but these errors were encountered: