Массив проверки Laravel, доступ к элементу при проверке?

У меня есть массив элементов, которые я хочу проверить, этот массив имеет такую ​​форму

{
    "slugs" : {
        1 : "prueba",
        2 : "test"
}

Заголовки - это вход <input name="slugs[{{ $lang->id }}]">, а числа - это идентификатор языка 1 = spanish / 2 = english.

Я хочу проверить уникальность этих полей в таком запросе формы.

public function rules()
{
    $rules = [
        //
        'slugs.*' => Rule::unique('translation_entries')->where(function($query) {
            //here i want to access the * that represent the lang id
            //like this $query->where('lang_id','=',$query->*);
        })
    ];
}

могу ли я получить доступ к индексу * внутри уникального класса правил?


person Carlos Salazar    schedule 28.08.2018    source источник
comment
Какую версию Laravel вы используете?   -  person Rwd    schedule 29.08.2018


Ответы (1)


Пока вы используете Laravel> = 5.5, вы можете использовать закрытие

'slugs.*' => [
    function ($attribute, $value, $fail) {
        $id = str_after($attribute, '.');

        if (\DB::table('translation_entries')->where('lang_id', $id)->where('slug', $value)->exists()) {
            $fail('The slug has already been taken.');
        }
    },
],

Измените 'slug' на имя столбца в translation_entries таблице (если отличается).

person Rwd    schedule 28.08.2018