Да! Вы можете использовать пользовательский запрос в вашем файле запроса.
Например;
public function rules() {
$roles['contacts.*.contact'] = [
'bail',
'regex:/^[7-9][0-9]{9}$/',
'exists:user_contact,contact_no',
Rule::unique("user_contact")
->where(function ($query) {
$query->where('user_id', Auth::user()->id)
->where("contact_no", XXX )->where("is_preferred", 1);
})
];
return $roles;
}
Если вы хотите использовать любое значение поля в своем запросе, вы можете передать значение поля через ключевое слово use
в функцию Closure. Здесь мы опубликуем YOM
экземпляр, что означает, что вы можете использовать его как Request
, чтобы вы могли получить доступ ко всем параметрам запроса.
Например;
public function rules() {
$roles['contacts.*.contact'] = [
'bail',
'regex:/^[7-9][0-9]{9}$/',
'exists:user_contact,contact_no',
Rule::unique("user_contact")
->where(function ($query) use ($this) {
$contacts = array_values($this->contacts);
$query->where('user_id', Auth::user()->id)
->whereIn("contact_no", $contacts )->where("is_preferred", 1);
})
];
return $roles;
}
Совет, вам не следует напрямую использовать запрос в файле запроса проверки, потому что он не выглядит хорошим.
Вы можете использовать Пользовательская проверка вместо встроенного запроса. Это будет очень ясно.