Adonis.js 关系
Posted
技术标签:
【中文标题】Adonis.js 关系【英文标题】:Adonis.js Relationships 【发布时间】:2020-03-04 13:11:00 【问题描述】:我有这些表:公司、分支机构、用户、users_branches
每个分支机构都与一个公司相关联。用户可以链接到在 users_branches 数据透视表
中捕获的分支在 company 的 index 和 show 方法中,我只需要显示为用户有权访问的公司,即仅显示为链接到他注册的任何分支机构的公司.你能帮帮我吗?
我今天拥有的是这个,非常基本的,并且列出了所有内容:
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】:这可能有效,(如果出现任何错误,您可能还需要将 'user_id'
更改为 'id'
,同时启用 DEBUG 并观察查询
const companies = await Company.query()
.whereHas('branches', branchesQuery =>
branchesQuery.whereHas('users', uq =>
uq.where('user_id', 1)
)
)
.fetch()
【讨论】:
以上是关于Adonis.js 关系的主要内容,如果未能解决你的问题,请参考以下文章