Skip to content

Instantly share code, notes, and snippets.

@meftunca
Created May 3, 2020 09:37
Show Gist options
  • Save meftunca/67404644da3161d4ac48fe03ccf2e415 to your computer and use it in GitHub Desktop.
Save meftunca/67404644da3161d4ac48fe03ccf2e415 to your computer and use it in GitHub Desktop.
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
}
@ataybur
Copy link

ataybur commented May 3, 2020

https://jinzhu.me/gorm/associations.html
Burdaki gibi Foreign Key ve Association Key belirtmelisin.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment