[PROMOÇÃO] Assine com + 30% de desconto ANUAL MENSAL (últimas horas)
RICARDO M  ASSIS
Criador RICARDO M ASSIS 02/11/2021

Tentei vicular os cargos ao tenant, porém vi que se eu deixda-los como unique no banco, um tenant não cosnegue cadastrar se ja tiver no banco. Vi tambem que se eu tirar o unique, posso acabar repetindo o nome no banco. Existe uma maneira de deixar unique apenas no tenant?

Criador RICARDO M ASSIS 02/11/2021

Fiz da seguinte maneira. Removi o unique do banco de dados e da validator. No model de Roles criei um metodo que faz uma busca na tabela comparando o nome do cargo ao que ja tem na tabela  e compara com o tenant_id.

No controller, após passar pela validação submeto o $request->name e o $tenant_id a este metodo, se voltar null, deixo seguir a diante para cadastro, caso retorne o objeto, dou um redirect back informando que o cargo ja esta cadastrado dentro do tenant.

Com isso consegui cadastrar cargos iguais para diferentes tenants.

Sou iniciante mas se puder melhora isso será bom de mais!

 

// Model

  public function rolesName($id, $name)

    {

        return $this->where('tenant_id', $id)

                ->where('name', $name)->first();

    }

// Controller

 public function store(StoreUpdateRoleRequest $request)

    {

        $tenant = auth()->user()->tenant->id;

 

        $result = $this->repository->rolesName($tenant, $request->name);

 

        if($result){

            

            return redirect()->back()->with('warning', 'Esse cargo já esta cadastrado');

        }

 

        $this->repository->create($request->all());

 

        return redirect()->route('roles.index')->with('success', 'Cargo cadastrado com sucesso');

    }

RICARDO M  ASSIS
Manager Carlos Ferreira 02/11/2021

Olá, Ricardo!
Tudo bem?

Existe sim amigo, aqui ensino como criar um validator personalizado por tenant: https://academy.especializati.com.br/aula/criar-validacao-personalizada-no-laravel-tenant-unique

Carlos Ferreira
Criador RICARDO M ASSIS 02/11/2021

A legal bacana muito melhor e sem gambiarras como eu fiz. Obrigado. 

RICARDO M  ASSIS
Sabe a Solução? Ajude a resolver!

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!