Адонис. js Отношения - PullRequest
       11

Адонис. js Отношения

0 голосов
/ 04 марта 2020

У меня есть эти таблицы: компании, филиалы, пользователи, users_branches

Каждая ветка связана с компанией . Пользователь может быть связан с веткой, которая захватывает в users_branches сводную таблицу

В индексах и методах отображения компании мне нужно отображать только как компании, которые пользователь имеет доступ к нему, то есть только как компании, которые связаны с каким-либо филиалом, в котором он зарегистрирован. Можете ли вы помочь мне?

Сегодня у меня есть вот что, очень базовое c и перечисление всего:

async index () {
  const companies = await Company.all()
  return companies
}

async show ({ params }) {
  const company = await Company.findOrFail(params.id)

  await company.load('branches')

  return company
}

Я пытался сделать это двумя другими способами:

async index ({ auth }) {
  const { user } = auth

  return user.branches().company().fetch()
}

и

async index () {
  const companies = await Company.query()
    .whereHas('branches', branchesQuery => {
      branchesQuery.wherePivot('user_id', 1)
    })
    .fetch()

  return companies
}

Но это не работает

1 Ответ

0 голосов
/ 08 марта 2020

Это может сработать, (вам также может потребоваться изменить 'user_id' на 'id', если это выдаст какую-либо ошибку, также включите DEBUG и просмотрите запрос

const companies = await Company.query()
.whereHas('branches', branchesQuery => {
  branchesQuery.whereHas('users', uq => {
    uq.where('user_id', 1)
  })
})
.fetch()
...