Отношение и обратное отношение не работают вместе Adonis JS - PullRequest
2 голосов
/ 22 мая 2019

У меня есть 3 модели Country, State, City country.js

  state () {
    return this.hasMany(State, 'id', 'country_id')
  }

state.js

 city () {
    return this.hasMany(City, 'id', 'state_id')
  }
  stateCountry () {
    return this.belongsTo(Country, 'country_id', 'id')
  }

city.js

cityState () {
    return this.belongsTo(State, 'state_id', 'id')
  }

Теперь я пытаюсь получить два типа данных 1. Из страны> штат> город (нормальное отношение) 2. Из города> штат> страна (обратное отношение)

case 1:
const countries = await Country.query()
          .with('state.city')
          .fetch()
case 2:
const citties = await City.query()
      .with('cityState.stateCountry')
      .fetch()

Теперь, в зависимости от того, чтоЯ запустил первый, будет работать и даст мне правильный результат, однако при выполнении второго случая выбрасывать 500 Ошибка

this.RelatedModel.query не является функцией

Теперь, если я перезагружаю сервер и запускаю второй случай, тоЯ буду работать, и первый перестанет работать.Пожалуйста, помогите нам с этой проблемой.похоже на какое-то кеширование в запросе или в модели ORM.

1 Ответ

3 голосов
/ 27 мая 2019

При определении отношения вам нужно указать пространство имен, а не экземпляр вашей модели.Ваша модель состояния станет:

const Model = use('Model')


class State extends Model {

  city () {

    return this.hasMany('App/Models/City', 'id', 'state_id')

  }

  stateCountry () {

  return this.belongsTo('App/Models/Country', 'country_id', 'id')

  }

}

Обновите всю свою модель, и все должно работать нормально.

...