Уникальные две колонны в Laravel - PullRequest
0 голосов
/ 30 апреля 2018

Я работаю с Laravel 5.6 У меня есть эта таблица

users_groups table

с этими столбцами user_id ссылка на users идентификатор автоматического увеличения и group_id ссылка на идентификатор автоматического увеличения группы в groups таблица

Теперь я пытаюсь проверить, что запись данных является уникальным значением для обоих столбцов вместе, но это не может быть user_id и group_id одинаковыми в таблице. Я нашел этот код и попробовал:

    $validatedData = $request->validate([
        'user_id' => 'required|unique_with:users_groups,group_id',
        'group_id' => 'required|unique_with:users_groups,user_id',
    ]);

Это дало мне эту ошибку:

Метод Illuminate \ Validation \ Validator :: validateUniqueWith не существует.

Любая помощь, пожалуйста?

Ответы [ 2 ]

0 голосов
/ 30 апреля 2018

Я считаю, что вы ищете это:

// Haven't tried this code, but it should be pretty close to what you're looking for
use Illuminate\Validation\Rule;

$validatedData = $request->validate([
    'user_id' => [
        'required',
        Rule::unique('users_groups')->where(function ($query) {
            return $query->where('group_id', $request->group_id);
        })
    ],
    'group_id' => [
        'required',
        Rule::unique('users_groups')->where(function ($query) {
            return $query->where('user_id', $request->user_id);
        })
     ]
]);
0 голосов
/ 30 апреля 2018

Правильный способ проверки по таблице в базе данных - использовать unique:table name,column

для вашего случая это должно быть

    $validatedData = $request->validate([
    'user_id' => 'required|unique:users_groups,group_id',
    'group_id' => 'required|unique:users_groups,user_id',
]);

см. документы по Laravel

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...