hasMany(Target, foreignKey, foreignKeyTarget) {
      return this._relation('hasMany', Target, {
        foreignKey,
        foreignKeyTarget
      }).init(this);
    }
This relation specifies that this model has one or more rows in another table which match on this model's primary
key.

@example
const Author = bookshelf.model('Author', {
  tableName: 'authors',
  books() {
    return this.hasMany('Book')
  }
})

// select * from `authors` where id = 1
// select * from `books` where author_id = 1
Author.where({id: 1}).fetch({withRelated: ['books']}).then(function(author) {
  console.log(JSON.stringify(author.related('books')))
})

@method Model#hasMany
@param {Model|string} Target
  Constructor of {@link Model} targeted by join. Can be a string specifying a previously registered model with
  {@link Bookshelf#model}.
@param {string} [foreignKey]
  ForeignKey in the `Target` model. By default, the foreign key is assumed to be the singular form of this
  model's tableName, followed by `_id` / `_{{{@link Model#idAttribute idAttribute}}}`.
@param {string} [foreignKeyTarget]
  Column in this model's table which `foreignKey` references, if other than this model's `id` /
  `{@link Model#idAttribute idAttribute}`.
@returns {Collection} A new empty Collection.