Массив проверки Laravel, доступ к элементу при проверке? - PullRequest
0 голосов
/ 28 августа 2018

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

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

Slugs - это ввод <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->*);
        })
    ];
}

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

1 Ответ

0 голосов
/ 29 августа 2018

Пока вы используете 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 (если отличается).

...