Laravel 如何验证是否存在并属于用户

Laravel how to validate if exists and belong to user

我需要检查请求中的shift_id是否存在于数据库中,可以通过以下

'shift_id' => 'required|exists:shifts,id'

但是我怎样才能检查这个 shift_id 是否属于经过身份验证的用户

请注意班次 table 有一个名为 user_id

的列

您可以通过在第一个列检查后添加列的名称和值来使用内联验证 Like,

'shift_id' => 'required|exists:shifts,id,user_id,'.auth()->user()->id,

并且如果您想自定义验证规则执行的查询,您可以使用规则class来流畅地定义规则。在这个例子中,

use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\Rule;
 
Validator::make($data, [
    'shift_id' => [
         'required',
          Rule::exists('shifts')->where(function ($query) {
                return $query->where('id', request()->get('shift_id'))->where('user_id', auth()->user()->id);
          }),
     ],
]);