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}",
            // ...
        ];
    }