selectConstraints(knex, options) {
      const resp = options.parentResponse;

      // The `belongsToMany` and `through` relations have joins & pivot columns.
      if (this.isJoined()) this.joinClauses(knex);

      // Call the function, if one exists, to constrain the eager loaded query.
      if (options._beforeFn) options._beforeFn.call(knex, knex);

      // The base select column
      if (Array.isArray(options.columns)) {
        knex.columns(options.columns);
      }

      const currentColumns = _.find(knex._statements, {grouping: 'columns'});

      if (!currentColumns || currentColumns.length === 0) {
        knex.distinct(this.targetTableName + '.*');
      }

      if (this.isJoined()) this.joinColumns(knex);

      // If this is a single relation and we're not eager loading limit the query to a single item.
      if (this.isSingle() && !resp) knex.limit(1);

      // Finally, add (and validate) the WHERE conditions necessary for constraining the relation.
      this.whereClauses(knex, resp);
    }
Injects the necessary `select` constraints into a `knex` query builder.

@param {Knex} knex Knex instance.
@param {object} options
@return {undefined}