laravel - Laravel - 如何使用规则请求创建唯一的两个字段
问题描述
在 Laravel-8 中,我有这个独特的规则请求验证:
public function rules()
{
return [
//company
'companyName' => [
'required',
'string',
'min:3',
'max:100',
],
'country_id' => [
'nullable',
],
];
}
如何使 companyName 相对于 country_id 是唯一的?
谢谢
解决方案
您可以为您的规则集创建自定义验证规则。
我建议你Country
与hasMany()
Company
public function rules()
{
return [
//company
'companyName' => [
'required',
'string',
'min:3',
'max:100',
function($attribute, $value, $fail) {
$country = Country::findOrFail(request()->get('country_id'));
if(!$country->companies()->whereName(request()->get('companyName'))->get()->isEmpty()) {
$fail('Woops, there\'s a country with this name. Type another one, please :)');
}
},
],
'country_id' => [
'nullable',
],
];
}
在此处阅读有关自定义 Laravel 验证规则的更多信息:https ://laravel.com/docs/8.x/validation#custom-validation-rules
推荐阅读
- reactjs - 使用 Ant Design 验证来自父表单的嵌套组件表单项
- ios - 当我将 @iOSXCUITFindBy 用于带有 selenium 3.141.59 的 java 客户端 7.3.0 时使用的 ios 驱动程序的 pagefactory 声明中的空指针异常
- c - const char * 数组不映射到闪存中
- vue.js - 简单的 Vue 存储模式 - 初始服务器获取没有反应
- python - Pandas 基于真/假条件的累计和
- nginx - nginx 使用 https 和 http 设置两个子域不起作用
- javascript - 我添加了一个按钮并将其设置为 onClick,但出现错误消息。请回复
- c - 为什么 Frama-C v20.0 Calcium 不支持在非全局范围内重新定义 typedef
- java - Java中的父类函数访问
- python - 奇怪的符号而不是西里尔字母 Django