数据仓库

如果你需要自定义一个仓库,你可以继承基础仓库 ,他提供了 resource 所需的所有数据接口,如果请求的方法未实现,会抛出一个异常。

import Repository from 'easeadmin/repositories/repository'
import User from '#models/user'

export default class MyRepository extends Repository {
    public async show(id:any) {
        return await User.findOrFail(id)
    }

    public async update(id:any, data:any) {
        const result = await User.findOrFail(id)
        result.merge(data)
        return await result.save()
    }
}

基础仓库功能表

你可以查看 基础仓库源码 了解更多信息。

方法 功能描述
paginate(qs, filters) 分页数据
export(qs, filters) 导出数据
options(qs, filters) 选项数据
edit(id) 编辑数据
show(id) 详情数据
store(data) 新增数据
update(id,data) 更新数据
delete(id) 删除数据
restore(id) 恢复删除
forceDelete(id) 强制删除

资源仓库

如果你的仓库需要处理资源的 CRUD 操作,你可以继承资源仓库,他包含基础仓库的所有方法。并且额外实现了 crud 所需的接口。

import ResourceRepository from 'easeadmin/repositories/resource_repository'
import User from '#models/user'

export default class MyRepository extends ResourceRepository {
    protected model = User
}

资源仓库功能表

你可以查看 资源仓库源码 了解更多信息。

方法 功能描述
only() 获取安全的输入数据
scope() 全局查询范围控制
getModel() 获取模型
setModel() 设置模型
getOptionsValue() 获取用于保存的选项数据ID
getRelationValues() 获取用于保存的关联数据ID
queryBuilder(query,params,filters) 构建查询

资源仓库属性表

名称 默认值 功能描述
pk id 主键名称
fields 允许操作的字段
model 仓库模型
filters { id: eq, orderBy: orderBy} 允许的筛选器字段

请求外部数据

如果你的仓库需要请求外部数据,你可以使用 axiosfetch 来构建请求配置。

npm install axios

使用 axios 请求数据

import { Repository } from 'easeadmin/repositories/repository'
import axios from 'axios'

export default class MyRepository extends Repository {
    async show(id:any) {
        const response = await axios.get('/users/'+id)
        return response.data
    }
}