produtos com mesmo nome em tenants diferentes
![Leanderson Paulo da Silva](https://academy.especializati.com.br/assets/site/imgs/no-image.png)
estava enfrentando um problema com relação ao nome do produto e tb a url do mesmo, se em um tenant tive um produto com nome de suco de laranja, nenhum outro tenant poderia ter o mesmo nome. então criei uma regra na validação para resolver esse problema e tb já preparar a url e validala tb...
para preparar a url para validação:
/**
* Prepare the data for validation.
*
* @return void
*/
protected function prepareForValidation()
{
$this->merge([
'url' => Str::slug($this->name),
]);
}
![Leanderson Paulo da Silva](https://academy.especializati.com.br/assets/site/imgs/no-image.png)
e para fazer a validação, primeiro tirei os unique() das migrations fiz um rollback e usei a classe Rule, com uma sub query, que validada se o campo name e url são unicos para aquele tenant_id.
![Leanderson Paulo da Silva](https://academy.especializati.com.br/assets/site/imgs/no-image.png)
public function rules()
{
$id = $this->product ?? "";
$tenantId = ManagerTenant::getTenantIdentify();
return [
'name' => [
'required',
'max:255',
Rule::unique('products', 'name')->where(function ($query) use ($tenantId) {
return $query->where('tenant_id', $tenantId);
})->ignore($id, 'id')
],
![Leanderson Paulo da Silva](https://academy.especializati.com.br/assets/site/imgs/no-image.png)
'url' => [
'required',
'max:255',
Rule::unique('products', 'url')->where(function ($query) use ($tenantId) {
return $query->where('tenant_id', $tenantId);
})->ignore($id, 'id')
],
'price' => ['required', "regex:/^\d+(\.\d{1,2})?$/"],
'description' => ['required', 'min:3', 'max:10000'],
'image' => ['nullable', 'image']
];
}
![Leanderson Paulo da Silva](https://academy.especializati.com.br/assets/site/imgs/no-image.png)
não sei se esta certo ou se é uma boa pratica, mais resolveu o problema aqui, acredito que isso seja corrigido mais pra frente no curso, mais ja me antecipei para praticar um pouco, tento sempre fazer minhas implementações para não ficar so copiando codigo...
![Leanderson Paulo da Silva](https://academy.especializati.com.br/assets/site/imgs/no-image.png)
Olá, Leanderson!
Tudo bem?
No módulo 23, na aula 04 ensino como criar um custom validator no Laravel, isso resolve esse problema de forma bem elegante.
![Carlos Ferreira](https://storage.googleapis.com/eti-academy/users/carlos-ferreira.jpg)
Precisa estar logado para conseguir responder a este ticket!
Clique Aqui Para Entrar!