Php 是否有办法检查laravel 5.2中的两个输入是否唯一? 更新
我拥有的是一个包含以下列的表:Php 是否有办法检查laravel 5.2中的两个输入是否唯一? 更新,php,validation,laravel,unique,Php,Validation,Laravel,Unique,我拥有的是一个包含以下列的表: - ID - production_year - type 如果类型与用户希望通过的值已存在于表中,请检查生产年份是否也已存在,但只有当这些值存在于同一记录中时,验证才会失败。否则,请允许用户存储此记录 我试图检查同一记录中两个字段的唯一性 我已经看过关于条件验证的文档,但是我没有在那里找到答案 代码 有什么想法吗?谢谢 Laravel 5.3更新: 现在,您可以使用rule(\illumb\Validation\rule)类流畅地生成相同的规则 NULL,id
- ID
- production_year
- type
如果类型
与用户希望通过的值已存在于表中,请检查生产年份
是否也已存在,但只有当这些值存在于同一记录中时,验证才会失败。否则,请允许用户存储此记录
我试图检查同一记录中两个字段的唯一性
我已经看过关于条件验证的文档,但是我没有在那里找到答案
代码
有什么想法吗?谢谢 Laravel 5.3更新:
现在,您可以使用rule(\illumb\Validation\rule
)类流畅地生成相同的规则
NULL,id
不再需要字符串方式的一部分。见:
原始答案
现在无法测试,您可以尝试:
public function rules()
{
$type = $this->get('fk_type');
return [
'production_y' => "required|unique:your_table,production_year,NULL,id,type,{$type}",
// ...
];
}
解释:
unique:您的_表
设置表以进行唯一检查,生产年份
这与生产年份
相匹配,NULL,id
检查所有记录
3.1。如果您使用like{$id},id
它将检查唯一性,但带有{$id}
的记录除外,type,{$type}
并且类型应该是{$type}
从生产年份=$product\y、类型=$type和id为null的\u表中选择count(*)是否要验证db表中某列的“input-A”和db表中同一列的“input-B”?什么不起作用?如果你把唯一性规则放在两者上,它应该会起作用。我认为这将分别决定两者的唯一性,而他可能想要的是确定它们在一起是否是唯一的。这就像在数据库中为每列创建2个唯一键,而不是为2列创建一个唯一键。使用模型很简单,如果您有两个模型,那么您可以在validate$this->validate($request,['title'=>'unique:posts | unique:files',])中使用unique:modelName代码>是的,但我几乎可以肯定,使用validate、check也可以['production\u year'=>'必填项|唯一:表名、生产年、NULL、id、type.$type
类似的内容让我检查一下。谢谢!这确实有效!你能更好地解释一下这个验证在做什么吗?它在将来会非常有用!我明白了,现在我开始理解了。还有$This->get('fk\u type'))正在处理请求对吗?它正在存储输入中的外键?是的。$这是请求类本身。get方法来自Laravel FormRequest扩展的Symfony请求类。例如input::get()。谢谢!你救了我一天!
public function rules()
{
$type = $this->get('fk_type');
return [
'production_y' => [
'required',
Rule::unique('your_table', 'production_year')->where(function($query) {
$query->where('type', $type);
}),
],
];
}
public function rules()
{
$type = $this->get('fk_type');
return [
'production_y' => "required|unique:your_table,production_year,NULL,id,type,{$type}",
// ...
];
}