@@ -477,134 +477,6 @@ CREATE TABLE %s (
477
477
})
478
478
}
479
479
480
- // https://github.com/gogf/gf/issues/1570
481
- func Test_Table_Relation_Issue1570 (t * testing.T ) {
482
- var (
483
- tableUser = "user_" + gtime .TimestampMicroStr ()
484
- tableUserDetail = "user_detail_" + gtime .TimestampMicroStr ()
485
- tableUserScores = "user_scores_" + gtime .TimestampMicroStr ()
486
- )
487
- if _ , err := db .Exec (ctx , fmt .Sprintf (`
488
- CREATE TABLE %s (
489
- uid int(10) unsigned NOT NULL AUTO_INCREMENT,
490
- name varchar(45) NOT NULL,
491
- PRIMARY KEY (uid)
492
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
493
- ` , tableUser )); err != nil {
494
- gtest .Error (err )
495
- }
496
- defer dropTable (tableUser )
497
-
498
- if _ , err := db .Exec (ctx , fmt .Sprintf (`
499
- CREATE TABLE %s (
500
- uid int(10) unsigned NOT NULL AUTO_INCREMENT,
501
- address varchar(45) NOT NULL,
502
- PRIMARY KEY (uid)
503
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
504
- ` , tableUserDetail )); err != nil {
505
- gtest .Error (err )
506
- }
507
- defer dropTable (tableUserDetail )
508
-
509
- if _ , err := db .Exec (ctx , fmt .Sprintf (`
510
- CREATE TABLE %s (
511
- id int(10) unsigned NOT NULL AUTO_INCREMENT,
512
- uid int(10) unsigned NOT NULL,
513
- score int(10) unsigned NOT NULL,
514
- PRIMARY KEY (id)
515
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
516
- ` , tableUserScores )); err != nil {
517
- gtest .Error (err )
518
- }
519
- defer dropTable (tableUserScores )
520
-
521
- type EntityUser struct {
522
- Uid int `json:"uid"`
523
- Name string `json:"name"`
524
- }
525
- type EntityUserDetail struct {
526
- Uid int `json:"uid"`
527
- Address string `json:"address"`
528
- }
529
- type EntityUserScores struct {
530
- Id int `json:"id"`
531
- Uid int `json:"uid"`
532
- Score int `json:"score"`
533
- }
534
- type Entity struct {
535
- User * EntityUser
536
- UserDetail * EntityUserDetail
537
- UserScores []* EntityUserScores
538
- }
539
-
540
- // Initialize the data.
541
- gtest .C (t , func (t * gtest.T ) {
542
- var err error
543
- for i := 1 ; i <= 5 ; i ++ {
544
- // User.
545
- _ , err = db .Insert (ctx , tableUser , g.Map {
546
- "uid" : i ,
547
- "name" : fmt .Sprintf (`name_%d` , i ),
548
- })
549
- t .AssertNil (err )
550
- // Detail.
551
- _ , err = db .Insert (ctx , tableUserDetail , g.Map {
552
- "uid" : i ,
553
- "address" : fmt .Sprintf (`address_%d` , i ),
554
- })
555
- t .AssertNil (err )
556
- // Scores.
557
- for j := 1 ; j <= 5 ; j ++ {
558
- _ , err = db .Insert (ctx , tableUserScores , g.Map {
559
- "uid" : i ,
560
- "score" : j ,
561
- })
562
- t .AssertNil (err )
563
- }
564
- }
565
- })
566
-
567
- // Result ScanList with struct elements and pointer attributes.
568
- gtest .C (t , func (t * gtest.T ) {
569
- var users []Entity
570
- // User
571
- err := db .Model (tableUser ).
572
- Where ("uid" , g.Slice {3 , 4 }).
573
- Fields ("uid" ).
574
- Order ("uid asc" ).
575
- ScanList (& users , "User" )
576
- t .AssertNil (err )
577
- t .AssertNil (err )
578
- t .Assert (len (users ), 2 )
579
- t .Assert (users [0 ].User , & EntityUser {3 , "" })
580
- t .Assert (users [1 ].User , & EntityUser {4 , "" })
581
- // Detail
582
- err = db .Model (tableUserDetail ).
583
- Where ("uid" , gdb .ListItemValues (users , "User" , "Uid" )).
584
- Order ("uid asc" ).
585
- ScanList (& users , "UserDetail" , "User" , "uid:Uid" )
586
- t .AssertNil (err )
587
- t .AssertNil (err )
588
- t .Assert (users [0 ].UserDetail , & EntityUserDetail {3 , "address_3" })
589
- t .Assert (users [1 ].UserDetail , & EntityUserDetail {4 , "address_4" })
590
- // Scores
591
- err = db .Model (tableUserScores ).
592
- Where ("uid" , gdb .ListItemValues (users , "User" , "Uid" )).
593
- Order ("id asc" ).
594
- ScanList (& users , "UserScores" , "User" , "uid:Uid" )
595
- t .AssertNil (err )
596
- t .AssertNil (err )
597
- t .Assert (len (users [0 ].UserScores ), 5 )
598
- t .Assert (len (users [1 ].UserScores ), 5 )
599
- t .Assert (users [0 ].UserScores [0 ].Uid , 3 )
600
- t .Assert (users [0 ].UserScores [0 ].Score , 1 )
601
- t .Assert (users [0 ].UserScores [4 ].Score , 5 )
602
- t .Assert (users [1 ].UserScores [0 ].Uid , 4 )
603
- t .Assert (users [1 ].UserScores [0 ].Score , 1 )
604
- t .Assert (users [1 ].UserScores [4 ].Score , 5 )
605
- })
606
- }
607
-
608
480
func Test_Table_Relation_Many_ModelScanList (t * testing.T ) {
609
481
var (
610
482
tableUser = "user_" + gtime .TimestampMicroStr ()
0 commit comments