joinColumns(knex) {
      const columns = [];
      const joinTable = this.joinTable();
      if (this.isThrough()) columns.push(this.throughIdAttribute);
      columns.push(this.key('foreignKey'));
      if (this.type === 'belongsToMany') columns.push(this.key('otherKey'));
      push.apply(columns, this.pivotColumns);
      knex.columns(
        _.map(columns, function(col) {
          return joinTable + '.' + col + ' as _pivot_' + col;
        })
      );
    }
Injects and validates necessary `through` constraints for the current model.

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