Laravel проверка на основе переменной - PullRequest
0 голосов
/ 06 марта 2020

Это моя функция вставки в контроллер. Как я могу проверить код $ creation_code как уникальный с validatedData? Сейчас я использую $ check для проверки этого. Но я хочу проверить это с validatedData.

public function establishment_insert(Request $request){
            $validatedData = $request->validate([
                'name' => 'required|max:190',
                'code' => 'required|max:2',
                'district-id' => 'required|max:20',
            ]);


            $establishment_code = 'AS'.strtoupper(request('code'));

            $check = Establishment::where('code', '=', $establishment_code)->first();

            if($check){
                return redirect('establishments/'.$establishment->district_id)->with('failed', 'Establishment code already exists!');
            } else{
                // Insert to db.
            }
        }

Ответы [ 4 ]

0 голосов
/ 06 марта 2020

Измените ваш валид, как показано ниже:

$validatedData = $request->validate([
     'name' => 'required|max:190',
     'code' => 'required|max:2',
     'district-id' => 'required|max:20',
     'code' => [function ($attribute, $value, $fail) {
       $establishment_code = 'AS'.strtoupper($value);
       $check = Establishment::where('code', '=', $establishment_code)->first();
       if (!$check) {
           $fail(':attribute not found'); // error massage
       }
     }]
 ]);

См .: https://laravel-news.com/custom-validation-rule-objects

0 голосов
/ 06 марта 2020

Laravel имеет встроенное правило проверки с именем unique. Вы можете использовать unique для того же

'code' => 'required|max:2|unique:establishments,code', 

Laravel -> Проверка -> Уникальное правило

0 голосов
/ 06 марта 2020

изменить данные запроса

    $request->merge([
        'code' => 'AS'.strtoupper(request('code')),
    ]);

    $validatedData = $request->validate([
                'name' => 'required|max:190',
                'code' => 'required|max:2|unique:establishments,code',
                'district-id' => 'required|max:20',
            ]);
0 голосов
/ 06 марта 2020

Вы пытаетесь с помощью Валидатор

use Illuminate\Support\Facades\Validator;

public function store(Request $request)
    {
        $data = $request->all();
        $data['code'] = 'AS'.strtoupper(request('code'));
        $validator = Validator::make($data, [
             'name' => 'required|max:190',
              'code' => 'required|max:2|unique:establishments',
              'district-id' => 'required|max:20',
        ]);

        if ($validator->fails()) {
            return redirect('your route')
                        ->withErrors($validator)
                        ->withInput();
        }

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