В Laravel проверка запроса играет жизненно важную роль в обеспечении целостности и безопасности данных, вводимых пользователями. Одним из распространенных сценариев, который часто возникает, является необходимость одновременной проверки уникальности двух столбцов. В этой статье мы рассмотрим различные методы реализации этой уникальной двухколоночной проверки в Laravel, сопровождаемые разговорными объяснениями и примерами кода.
Метод 1: использование уникального правила
Самый простой способ проверить уникальность двух столбцов в Laravel — использовать правило unique
в логике проверки. Давайте рассмотрим сценарий, в котором у нас есть таблица users
со столбцами email
и username
, и мы хотим убедиться, что оба значения уникальны. Вот пример того, как мы можем этого добиться:
public function rules()
{
return [
'email' => 'required|email|unique:users',
'username' => 'required|unique:users'
];
}
Метод 2: определение специального правила проверки
Иногда одного уникального правила проверки может быть недостаточно для сложных сценариев. В таких случаях мы можем создать собственное правило проверки, которое проверяет уникальность двух столбцов одновременно. Вот пример:
public function rules()
{
return [
'email' => [
'required',
'email',
function ($attribute, $value, $fail) {
$username = $this->input('username');
$count = User::where('email', $value)
->where('username', $username)
->count();
if ($count > 0) {
$fail("The combination of email and username is already taken.");
}
}
]
];
}
Метод 3: использование класса запроса формы
Чтобы сохранить наш код чистым и организованным, мы можем использовать класс запроса формы Laravel для инкапсуляции правил проверки для нашего уникального сценария с двумя столбцами. Вот пример:
class UserRequest extends FormRequest
{
public function rules()
{
return [
'email' => 'required|email|unique_two_columns:users,username',
];
}
}