Created
May 3, 2020 09:37
-
-
Save meftunca/67404644da3161d4ac48fe03ccf2e415 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
type User struct { | |
ID int64 `gorm:"primary_key;auto_increment" json:"id"` | |
NickName string `gorm:"size:255;not null;unique" db:"nick_name" json:"nickName"` | |
Avatar string `gorm:"size:255;unique" db:"avatar" json:"avatar"` | |
Name string `gorm:"size:255;not null" json:"name"` | |
LastName string `gorm:"size:255;not null" db:"last_name" json:"lastName"` | |
Phone string `gorm:"size:16;not null;unique" json:"phone"` | |
RememberToken string `gorm:"size:255;not null" db:"remember_token" json:"rememberToken"` | |
Email string `gorm:"size:100;not null;unique" json:"email"` | |
Password string `gorm:"size:100;not null;" json:"password"` | |
Active bool `gorm:"DEFAULT:true" json:"active" db:"active" ` | |
NotifyToken NotifyToken `json:"notifyToken" db:"notify_token"` | |
Friends []Friends `json:"friends" db:"friends"` | |
LoginAt time.Time `gorm:"default:CURRENT_TIMESTAMP" json:"loginAt"` | |
CreatedAt time.Time `gorm:"default:CURRENT_TIMESTAMP" json:"createdAt"` | |
UpdatedAt time.Time `gorm:"default:CURRENT_TIMESTAMP" json:"updatedAt"` | |
} | |
type Friends struct { | |
ID int64 `json:"id" gorm:"primary_key:true"` | |
OwnerID int64 `json:"ownerId" ` | |
FriendID int64 `json:"friendId" ` | |
Blocked bool `json:"blocked"` | |
BlockedAt sql.NullTime `gorm:"default:null" json:"blockedAt"` | |
CreatedAt time.Time `gorm:"default:CURRENT_TIMESTAMP" json:"createdAt"` | |
} | |
//gorm ile yaptığım sorgum | |
func (u *User) FindUsersBySearch(db *gorm.DB, search string, myID int64) (*[]User, error) { | |
var err error | |
users := []User{} | |
// search = fmt.Sprintf("%"+"%s%", search) | |
fmt.Println("search", search) | |
db.Debug().LogMode(true).Preload("Friends").Model(users).Table("users").Select("*").Joins("inner join friends on friends.owner_id=users.id or friends.friend_id=users.id").Where("public.users.name LIKE ? OR users.nick_name LIKE ? OR users.last_name LIKE ?", "%"+search+"%", "%"+search+"%", "%"+search+"%").Not("id", myID).Find(&users) | |
err = db.Error | |
if err != nil { | |
return &[]User{}, err | |
} | |
if gorm.IsRecordNotFoundError(err) { | |
return &[]User{}, errors.New("Users Not Found") | |
} | |
for _, ar := range users { | |
fmt.Println("users", ar.Friends) | |
} | |
return &users, err | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
https://jinzhu.me/gorm/associations.html
Burdaki gibi Foreign Key ve Association Key belirtmelisin.