belongsTo(Target, foreignKey, foreignKeyTarget) {
      return this._relation('belongsTo', Target, {
        foreignKey,
        foreignKeyTarget
      }).init(this);
    }
This relationship is used when a model is a member of another `Target` model.

It can be used in {@tutorial one-to-one} associations as the inverse of a
{@link Model#hasOne hasOne}. It can also used in {@tutorial one-to-many} associations as the
inverse of {@link Model#hasMany hasMany}, and is the "one" side of that association. In both
cases, the belongsTo relationship is used for a model that is a member of another Target
model, referenced by the `foreignKey` attribute in the current model.

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

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

@method Model#belongsTo
@param {Model|string} Target
  Constructor of {@link Model} targeted by the join. Can be a string specifying a previously registered model
  with {@link Bookshelf#model}.
@param {string} [foreignKey]
  Foreign key in this model. By default, the `foreignKey` is assumed to be the singular form
  of the `Target` model's tableName, followed by `_id`, or
  `_{{{@link Model#idAttribute idAttribute}}}` if the `idAttribute` property is set.
@param {string} [foreignKeyTarget]
  Column in the `Target` model's table which `foreignKey` references. This is only needed in
  case it's other than `Target` model's `id` / `{@link Model#idAttribute idAttribute}`.
@returns {Model}
  The return value will always be a model, even if the relation doesn't exist, but in that
  case the relation will be `null` when {@link Model#serialize serializing} the model.