-
-
Notifications
You must be signed in to change notification settings - Fork 202
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
nullzero relations not being fetched #955
Comments
If i understand correctly i have the same issue here. |
I have implemented it as you have shown as an example in the following way, but I could not reproduce the bug. type Child struct {
ID int `bun:"id,pk,notnull"`
}
type Parent struct {
ID int `bun:"id,pk,notnull"`
ChildID int
Child *Child `bun:"rel:has-one,join:child_id=id"`
}
type Main struct {
ID int `bun:"id,pk,notnull"`
ChildID int
Child *Parent `bun:"rel:has-one,join:child_id=id"`
}
func main() {
...
db := bun.NewDB(sqlDB, mysqldialect.New())
db.AddQueryHook(bundebug.NewQueryHook(bundebug.WithVerbose(true)))
ctx := context.Background()
// Create tables
if _, err := db.NewDropTable().Model((*Main)(nil)).IfExists().Exec(ctx); err != nil {
log.Fatalf("create table failed: %v", err)
}
if _, err := db.NewDropTable().Model((*Parent)(nil)).IfExists().Exec(ctx); err != nil {
log.Fatalf("create table failed: %v", err)
}
if _, err := db.NewDropTable().Model((*Child)(nil)).IfExists().Exec(ctx); err != nil {
log.Fatalf("create table failed: %v", err)
}
if _, err := db.NewCreateTable().Model((*Child)(nil)).Exec(ctx); err != nil {
log.Fatalf("create table failed: %v", err)
}
if _, err := db.NewCreateTable().Model((*Parent)(nil)).Exec(ctx); err != nil {
log.Fatalf("create table failed: %v", err)
}
if _, err := db.NewCreateTable().Model((*Main)(nil)).Exec(ctx); err != nil {
log.Fatalf("create table failed: %v", err)
}
// Insert data
if _, err := db.NewInsert().Model(&Child{ID: 1}).Exec(ctx); err != nil {
log.Fatalf("insert failed: %v", err)
}
if _, err := db.NewInsert().Model(&Parent{ID: 1, ChildID: 1}).Exec(ctx); err != nil {
log.Fatalf("insert failed: %v", err)
}
if _, err := db.NewInsert().Model(&Main{ID: 1, ChildID: 1}).Exec(ctx); err != nil {
log.Fatalf("insert failed: %v", err)
}
// Select data
var main Main
if err := db.NewSelect().Model(&main).Relation("Child.Child").Where("main.id = ?", 1).Scan(ctx); err != nil {
log.Fatalf("select failed: %v", err)
}
log.Printf("%+v", main) // result: {ID:1 ChildID:1 Child:0xc00020c2a0}
} Could you please tell me a bit more about under what conditions the bug occurred (which RDBMS, which version of Bun)? |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
When defining a nullzero relation it fails when using
Scan()
.Example:
With this structure when I try to fetch
MainTable
and add a relation usingRelation("Child.Child")
it rather returns no element even though it exists and can be fetched directly or panics with:I found a similar issue here, not sure if it's related #799
The text was updated successfully, but these errors were encountered: