首页 > 解决方案 > 多个字段在 laravel 中的唯一约束

问题描述

我有这张桌子:

在此处输入图像描述

在我输入的代码中:

    $id = request()->route()->parameter('keyword')?->id;
    return [
        'key'  => ['required', 'unique:keywords,key,project_page_id,'.$id],
    ];

如果我尝试使用键addButton和添加新项目project_page_id = 5,我会收到 422 错误消息:The key has already been taken.。我想拥有keyproject_page_id 的唯一性,我怎样才能做到这一点?

标签: phplaravellaravel-8

解决方案


Laravel具有验证对象,您可以在其中获得更强大的选项。它有一个独特的验证对象,您可以调整查询,我认为您需要以下逻辑,也可以检查project_page_id.

'key'  => ['required', (new Unique('keywords', 'id'))->where('project_page_id', $id)],

推荐阅读