我正在尝试制作一个唯一的验证器来检查特定的产品。类似:
// 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');
检查我代码中的注释基本上是这样做的:
- 验证名称和url的
$request
- 抓住
user->id
- 创建新产品
- (这是我无法工作的(仅针对特定的产品ID运行唯一规则,并检查它是否具有唯一的PLATAFORMA_ID条目
无法使验证规则正常工作,所以我找到了这个解决方案:
- 在迁移文件中的product_id和plataforma_id之间创建了一个唯一的索引
- 创建了一个封装空穴存储方法的try-catch
- 捕获$e并将其转换为一条500错误消息:"该产品已经有一个带有该id的plataforma_id。刚刚添加了第一个记录,在编辑页面中更改其信息。如果此错误持续存在,请联系dev@">