[PROMOÇÃO] Assine com + 30% de desconto ANUAL MENSAL (últimas horas)
Leanderson Paulo da Silva
Criador Leanderson Paulo da Silva 15/03/2021

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...

Criador Leanderson Paulo da Silva 15/03/2021

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
Criador Leanderson Paulo da Silva 15/03/2021

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
Criador Leanderson Paulo da Silva 15/03/2021
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
Criador Leanderson Paulo da Silva 15/03/2021
'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
Criador Leanderson Paulo da Silva 15/03/2021

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
Manager Carlos Ferreira 15/03/2021

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
Sabe a Solução? Ajude a resolver!

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!