У меня проблема при использовании уникального правила laravel в CreateRequest с JsValidation. Вот код запроса.
class CreateProductRequest extends Request
{
public function rules()
{
return [
'factory_id' => 'required',
'category' => 'required',
'product_code' => 'required|unique:product',
'un_code' => 'required|unique:product',
'hs_code' => 'required|unique:product',
'section' => 'required',
'status' => 'required',
'product_type' => 'required',
'classification' => 'required',
'main_product_market' => 'required',
'custodian_user_id' => 'required'
];
}
}
Когда я удаляю уникальное поле, это нормально. Но с уникальными правилами я бы получил 500 ошибок сервера следующим образом
В консоли это сообщает
Стоит отметить, что если я не буду использовать JSValidation, Laravel не выдаст ошибок
Обновить :
В панели отладки я получаю эту ошибку
'PDOException' with message 'SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '' for key 'name'' in /.../demo/vendor/laravel/framework/src/Illuminate/Database/Connection.php:408:
Вы пытаетесь использовать одно и то же уникальное поле для каждого элемента:
'product_code' => 'required|unique:product',
'un_code' => 'required|unique:product',
'hs_code' => 'required|unique:product',
я догадываюсь product
это твой стол, а не поле.
Я думаю, что это то, что вы можете быть после:
'product_code' => 'required|unique:product,product_code',
'un_code' => 'required|unique:product,un_code',
'hs_code' => 'required|unique:product,hs_code',
Это потребует, чтобы каждое из этих полей было уникальным.
Проблема была позже решена. Моя проблема была в том, что я не печатал CreateProductRequest
и вместо этого использовал Request
,
Я должен был typeHinted расширенный класс запроса, который объявляет правила.