📜  在 laravel 验证中唯一检查两个 clolumn - PHP (1)

📅  最后修改于: 2023-12-03 15:23:12.438000             🧑  作者: Mango

在 Laravel 验证中唯一检查两个 column

在 Laravel 验证中,我们通常使用 unique 规则来检查某个 column 是否唯一。但是在某些情况下,我们需要同时检查两个 column 是否唯一。这时候,需要使用 Rule::unique

语法
Rule::unique('table')->where(function ($query) use ($request) {
    return $query->where('column1', $request->input('column1'))
        ->where('column2', $request->input('column2'));
})
解释
  • table : 要检查唯一性的表名。
  • column1column2 : 要检查唯一性的字段名。
  • $request->input('column1')$request->input('column2') : 提交表单中的值。
  • use ($request) : 在闭包函数中使用 $request 变量。
示例

例如,在注册页面中,我们需要检查邮箱和手机号是否唯一。我们需要在控制器中的 rules 函数中添加以下规则:

use Illuminate\Validation\Rule;

public function rules()
{
    return [
        'email' => [
            'required',
            'email',
            Rule::unique('users')->where(function ($query) {
                return $query->where('phone', request()->input('phone'));
            }),
        ],
        'phone' => [
            'required',
            Rule::unique('users')->where(function ($query) {
                return $query->where('email', request()->input('email'));
            }),
        ],
    ];
}

这样就可以同时检查邮箱和手机号是否唯一了。

参考