validationRule 中的组合列
combination columns in validationRule
我是 Adonis.js 的新手,我有这样的用户迁移:
table.enu('type', ['client','admin','super_admin']),
table.string('mobile', 80).notNullable().unique();
现在,我想检查 mobile + type
在验证中对所有用户都是唯一的,而我只能使用此代码检查移动设备的唯一性:
mobile : 'required|string|unique:users,mobile',
我怎么能这样?
使用 Adonis.js 自己的验证器是不可能的。您应该为这种用例编写自己的验证方法。
查看 Adonisjs 创始人的回复:https://forum.adonisjs.com/t/several-unique-fields/1430/3
我使用扩展验证器创建了类似的东西:
async unique_combinationFn(data, field, message, args, get) { // eslint-disable-line
const Database = use('Database');
const value = get(data, field);
if (!value) {
return;
}
const [table, ...columns] = args;
const multipleClauses = columns.reduce(
(oldObject, column) => ({
...oldObject,
[column]: data[column],
}),
{}
);
const where = { ...multipleClauses, [field]: value };
const row = data.id
? await Database.table(table)
.where(where)
.whereNot('id', data.id)
.first()
: await Database.table(table)
.where(where)
.first();
if (row) {
throw message;
}
}
并使用:
code: [rule('required'), rule('unique_combination', ['users', 'company_id'])],
您可以在 link 的文档中找到更多信息:
我是 Adonis.js 的新手,我有这样的用户迁移:
table.enu('type', ['client','admin','super_admin']),
table.string('mobile', 80).notNullable().unique();
现在,我想检查 mobile + type
在验证中对所有用户都是唯一的,而我只能使用此代码检查移动设备的唯一性:
mobile : 'required|string|unique:users,mobile',
我怎么能这样?
使用 Adonis.js 自己的验证器是不可能的。您应该为这种用例编写自己的验证方法。
查看 Adonisjs 创始人的回复:https://forum.adonisjs.com/t/several-unique-fields/1430/3
我使用扩展验证器创建了类似的东西:
async unique_combinationFn(data, field, message, args, get) { // eslint-disable-line
const Database = use('Database');
const value = get(data, field);
if (!value) {
return;
}
const [table, ...columns] = args;
const multipleClauses = columns.reduce(
(oldObject, column) => ({
...oldObject,
[column]: data[column],
}),
{}
);
const where = { ...multipleClauses, [field]: value };
const row = data.id
? await Database.table(table)
.where(where)
.whereNot('id', data.id)
.first()
: await Database.table(table)
.where(where)
.first();
if (row) {
throw message;
}
}
并使用:
code: [rule('required'), rule('unique_combination', ['users', 'company_id'])],
您可以在 link 的文档中找到更多信息: