[PROMOÇÃO] Assine com + 30% de desconto ANUAL MENSAL (últimas horas)
Jean Silva
Criador Jean Silva 24/08/2022

Olá Professor, bom dia!

Tudo bem?. Poderia me audar por favor?.

Exemplo: Tenho uma tabela de VehicleTypes, com o campo: type, adicionei um valor de type = Caminhão e depois apaguei, registrou no DELETED_AT e sumiu da listagem, portanto ao adicionar um novo registro com o mesmo nome Caminhão no type, ele dá erro pois no banco já existe esse mesmo registro.

Erro:

    1. VehicleType and "DELETED_AT" is null)">"Error Code : 1722\r\nError Message : ORA-01722: invalid number\r\nPosition

StoreVehicleTypeRequest.php

public function rules()
    {
        return [
            'type' => ['required', 'max:50', Rule::unique('vehicle_types')->ignore('VehicleType')->whereNull('deleted_at')],
            'description' => ['required', 'max:255']
            // 'user_id' => ['required', 'max:18']
        ];
    }

2022_08_12_114236_create_vehicle_types_table

public function up()
    {
        Schema::create('vehicle_types', function (Blueprint $table) {
            $table->id();
            $table->string('type', 20)->unique();
            $table->string('description', 255);
            $table->string('user_id', 128);
            $table->timestamps();
            $table->softDeletes();
        });
    }
Manager Carlos Ferreira 24/08/2022

Olá, Jean!
Tudo bem?

Ajudo sim, claro.

Você pode fazer essa verificação de forma mais explicita, fica até mais fácil:
'type' => [
    'required',
    'max:50',
    'exists:vehicle_types,id,deleted_at,NULL'
],

Veja se é isso mesmo o que precisa;

Carlos Ferreira
Criador Jean Silva 24/08/2022

Olá professor bom dia!

Obrigado.

Infelizmente não foi, essa rule funcionaria mesmo no banco de dados estando a integridade unica?. Pois eu coloquei unique no campo na migrations.

  1. exception"Illuminate\\Database\\QueryException"
  2. file"C:\\laragon\\www\\Back-end\\gateway-web-backend\\vendor\\laravel\\framework\\src\\Illuminate\\Database\\Connection.php"
  3. line742
  4. message"Error Code : 904\r\nError Message : ORA-00904: \" DELETED_AT\": invalid identifier\r\nPosition : 72\r\nStatement : select count(*) as aggregate from \"VEHICLE_TYPES\" where \" ID\" = :p0 and \" DELETED_AT\" = :p1\r\nBindings : [Caminhão1, NULL]\r\n (SQL: select count(*) as aggregate from \"VEHICLE_TYPES\" where \" ID\" = Caminhão1 and \" DELETED_AT\" = NULL)"

 

public function rules()
    {
        return [
            'type' => ['required', 'max:50', 'unique:vehicle_types, id, deleted_at, NULL'],
            'description' => ['required', 'max:255']
            // 'user_id' => ['required', 'max:18']
        ];
    }

 

Jean Silva
Manager Carlos Ferreira 24/08/2022

Olá, Jean!

Você colocou alguns espaços, isso pode ser parte do problema:
Errado: 'exists:vehicle_types, id, deleted_at, NULL'
Certo: 'exists:vehicle_types,id,deleted_at,NULL']

Carlos Ferreira
Criador Jean Silva 24/08/2022

Obrigado Professor.

Jean Silva
Sabe a Solução? Ajude a resolver!

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!