code: func (q *Query) Select(values ...interface{}) error {
  	if q.stickyErr != nil {
  		return q.stickyErr
  	}
  
  	model, err := q.newModel(values...)
  	if err != nil {
  		return err
  	}
  
  	q, err = model.BeforeSelectQuery(q.ctx, q.db, q)
  	if err != nil {
  		return err
  	}
  
  	res, err := q.query(model, newSelectQuery(q))
  	if err != nil {
  		return err
  	}
  
  	if res.RowsReturned() > 0 {
  		if q.model != nil {
  			if err := q.selectJoins(q.model.GetJoins()); err != nil {
  				return err
  			}
  		}
  		if err := model.AfterSelect(q.ctx, q.db); err != nil {
  			return err
  		}
  	}
  
  	return nil
  }
docs: // Select selects the model.