Laravel Validator: ограничение проверки уникального поля указанным c продуктом - PullRequest
0 голосов
/ 19 февраля 2020

Я пытаюсь создать уникальный валидатор для проверки определенного c продукта. Например:

// Validate Request for name and url
$this->validate($request, [
    'nome' => 'bail|required|min:2|unique:produto,name',
    'url'  => 'required|unique:produto',
]);

// Grab the user->id
$user_id = Auth::user()->id;

// Create a new product
if ($product = Product::create([
    'user_id'   => $user_id,
    'name'      => $request['nome'],
    'url'       => $request['url'],
    'is_active' => $request['is_active'],
])) {
    flash()->success('Produto criado.');
} else {
    flash()->error('Não foi possivel criar produto.');
}

// Check if $request data is unique at above created product
$this->validate($request, [
    'addmore.*.plataforma' => 'required|unique:plataforma_produto,plataforma_id,' . $product->id . ',id,product_id',
]);

// For each of the addmore.*. fields create an entry on DB
foreach ($request->addmore as $value) {
    Plataformaprod::create([
        'product_key'          => $value['product_key'],
        'basic_authentication' => $value['basic_authentication'],
        'codigo_produto'       => $value['codigo_produto'],
        'plataforma_id'        => $value['plataforma'],
        'product_id'           => $product->id,
    ]);
}

return redirect()->route('products.index');

Проверка комментариев в моем коде в основном делает это:

  • Подтвердите $request для имени и URL
  • Захватите user->id
  • Создать новый продукт
  • (это то, что я не могу заставить работать) ЗАПУСТИТЕ УНИКАЛЬНОЕ ПРАВИЛО ПРОСТО ПРОТИВ УКАЗАНИЯ C PRODUCT_ID И ПРОВЕРЬТЕ, ЕСЛИ У ЭТОГО УНИКАЛЬНО PLATAFORMA_ID ЗАПИСИ!

1 Ответ

0 голосов
/ 20 февраля 2020

Не удалось настроить правило проверки для правильной работы, поэтому я нашел следующее решение:

  • Создал уникальный индекс между product_id и plataforma_id внутри моего файла миграции.
  • Создал попробуйте перехватить инкапсуляцию метода хранилища отверстий.
  • Перехватите $ e и установите сообщение об ошибке 500: «У продукта уже есть plataforma_id с этим идентификатором. Просто добавьте первую запись, измените ее информацию в Редактировать страница. Если эта ошибка сохраняется, свяжитесь с dev @ "
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...