首页 > 解决方案 > laravel 验证:唯一的两个字段和数组

问题描述

使用 laravel 验证,我想确保一个字段是唯一的,但在数组上下文中。(我已经看到了这个这个,但它们没有解决数组上下文。)

假设我有这个 html:

<input name="sites[1][id]"><input name="sites[1][site_mrn]">
<input name="sites[2][id]"><input name="sites[2][site_mrn]">
<input name="sites[3][id]"><input name="sites[3][site_mrn]">

在我的验证规则中,我想确保每个站点的 id 都是有效的,并且 site_mrn 不为空,所以我有:

public function rules()
{
    return [
        'sites.*.site_mrn' => 'required|min:1',
        'sites.*.id' => 'exists:sites,id'
    ];
 }

所以那部分有效。我的问题是我想确保每对站点site_idsite_mrn在表中都是唯一的mpi_sites,但我不知道如何访问输入中的每个 id/site_mrn 对。我想做这样的事情:

'sites.*' => Rule::unique('mpi_sites')->where(function ($q) {
        $q->where('site_id', $xxxxx)->where('site_mrn', $yyyyy);
    })

标签: laravelvalidationlaravel-8

解决方案


推荐阅读