[PROMOÇÃO] Assine com + 30% de desconto ANUAL MENSAL (últimas horas)
Ubiratan Lima
Criador Ubiratan Lima 16/12/2023

Boa noite Professor, tudo bem?
Consegui avançar bastante...

Estou com uma dificuldade que não não consegui encontrar o problema... estous seguindo o curso de Laravel 10... e na parte de formularios de atualização, consegui trazer os dados todos corretos para atualizar o registro... no momento de atualisar com $user->update($data), não funciona,

Tentei tambem usar o User:: não funcionou. o $user->save() tambem não deu certo... ele apenas volta para a listagem de dados sem fazer alteração.

atualizei o github. https://github.com/ubiratanlima/RELIG-SYS

Gratidão... acho que eu devo ter feito alguma coisa grave no laravel, mas ja fiz e refiz e paro no mesmo ponto... Salvar ele salva, atualizar ele não atualiza.

Manager Carlos Ferreira 16/12/2023

Olá, Ubiratan! Tudo bem?

Fico feliz que está conseguindo progredir, a tendência é só melhorar.

Estou sem acesso ao GitHub, poderia compartilhar comigo o trecho do código?

Carlos Ferreira
Criador Ubiratan Lima 16/12/2023

Boa tarde.
Adicionei o git
https://github.com/ubiratanlima/RELIG-SYS
Tambem avancei nos dados. percebi que ele está travando em alguma validação do whatsapp... mas ja tirei tudo e ele fica informando o seguinte, mas apenas utilizando o SAVE $user->save($data);

SQLSTATE[HY000]: General error: 1364 Field 'whatsapp' doesn't have a default value (Connection: mysql, SQL: insert into `users` (`updated_at`, `created_at`) values (2023-12-18 07:09:47, 2023-12-18 07:09:47))

Estou entendendo que ele esá falando que não existe dado no campo whatsapp, mas se eu dou um dd($data); , eu pego o valor e está correto... eu tirei as validações e mesmo assim ele trava ai, acredito que o update esteja travando no mesmo lugar, mas eu não sei debugar essa parte... seu colocar o dd antes, no edit, verificar os dados, e colocar o dd para verificar as primeiras informações que chega... depois que chega existe um tratamento, que ainda não tirei... mas estou fazendo os testes nesse momento. Mas parece que estou correndo atras do rabo... rsrsrsrs paro sempre no mesmo lugar. rsrsrs

Aguardo sua opinião... esse sistema está meio frank... rsrsrs

Ubiratan Lima
Manager Carlos Ferreira 16/12/2023

Isso daqui é perigoso, porque vc expõe informações do seu banco:

https://github.com/ubiratanlima/RELIG-SYS/blob/main/app/Http/Controllers/UserController.php#L54

 

Aqui nessa validação, você poderia usar um regex, ou usar algum pacote do Laravel com validações de WhatsApp e etc:

https://github.com/ubiratanlima/RELIG-SYS/blob/main/app/Http/Requests/StoreUpdateUserFormRequest.php#L53C18-L53C34

 

--

Faz um debug, para ver o que retorna:

dd(User::create($data));

É importante, até mesmo para saber se está chegando no controller, se não chegou, é porque não está passando pela validação.

Carlos Ferreira
Criador Ubiratan Lima 16/12/2023

Não entendi a esposição do banco de dados, a linha que eu monto o nome do arquivo? é por causa do dado que informo algue pode pegar e explorar pelo id? (vou modificar).

sobre a validação, estou utilizando a do laravellegends.

Na parte do User::create($data) ele retorna certinho, tudo que preciso.

Meu problema está no no método update.

Ubiratan Lima
Criador Ubiratan Lima 16/12/2023

Coloquei como NULLABLE o campo, mas ele não pode ser null... fiz isso e o problema passou para o proximo problema de NOT NULL, ou seja todos os campos que são NOT NULL estão dando problema, mesmo não estando NULL.


SQLSTATE[HY000]: General error: 1364 Field 'name' doesn't have a default value (Connection: mysql, SQL: insert into `users` (`updated_at`, `created_at`) values (2023-12-19 06:44:51, 2023-12-19 06:44:51))

 

 rodei novamente colocando null para cpf, e olha só...
SQLSTATE[HY000]: General error: 1364 Field 'cpf' doesn't have a default value (Connection: mysql, SQL: insert into `users` (`updated_at`, `created_at`) values (2023-12-19 06:44:51, 2023-12-19 06:44:51))


Ubiratan Lima
Criador Ubiratan Lima 16/12/2023

fiz o debug no metodo update com o User::create($data) da resultado de chave duplicada...

SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '[email protected]' for key 'users_email_unique' (Connection: mysql, SQL: insert into `users` (`name`, `data_nascimento`, `email`, `gender`, `whatsapp`, `telefone`, `especialidade`, `rg`, `cpf`, `crp`, `password`, `status`, `profile`, `updated_at`, `created_at`) values (FELIX 2000 111, 2023-12-05, [email protected], feminino, (12) 99999-9999, (12) 8888-8888, 6, 12.312.312-3, 351.941.800-20, 92/849492, $2y$10$h4FA2KEODNrPikR6sz/pCuHucKWRyNiIW3bHXUgZck4m5aGFk.lSa, active, profissional, 2023-12-19 07:26:37, 2023-12-19 07:26:37))

Mas os dados estão ai.

Ubiratan Lima
Manager Carlos Ferreira 16/12/2023

Ah sim, achei que era no cadastro, não tinha ficado claro.

 

Vc passou um array para o método save, por isso não funciona:

https://github.com/ubiratanlima/RELIG-SYS/blob/main/app/Http/Controllers/UserController.php#L176

 

Deve usar o método update: $user->update($data);

Carlos Ferreira
Criador Ubiratan Lima 16/12/2023

Bom dia Prof. Eu utilizei e não gravou no banco. foi o primeiro que usei. o que ele faz é redirecionar para a listagem no final sem fazer alteração nenhuma... estou fazendo o teste alterando apenas o nome...

Ubiratan Lima
Manager Carlos Ferreira 16/12/2023

Está passando por este if? https://github.com/ubiratanlima/RELIG-SYS/blob/main/app/Http/Controllers/UserController.php#L124

Coloca um dd após ele, para debugar.

Carlos Ferreira
Criador Ubiratan Lima 16/12/2023

SIM

Ubiratan Lima
Manager Carlos Ferreira 16/12/2023

Tem um print do resultado do debug? Quero ver o que tem no $user

Carlos Ferreira
Criador Ubiratan Lima 16/12/2023

ok. vou mandar no ZAP. aqui eu não consigo colocar os prints.

 

Ubiratan Lima
Manager Carlos Ferreira 16/12/2023

Dúvidas técnicas é somente por aqui, sobe o print para qualquer site de upload de imagens, ex: https://uploaddeimagens.com.br/

Carlos Ferreira
Manager Carlos Ferreira 16/12/2023

public function update(Request $request, string $id)

{

    if (!$user == User::find($id)) {

        return back();

    }

 

    $data = $request->all();

    

    if ($request->foto) {

        $extension = $request->foto->getClientOriginalExtension();

        // $data['foto'] = $request->foto->store('profissionais');

        $data['foto'] = $request->foto->storeAs('profissionais', bcrypt($request->crp).".".$extension);

    }

    $data['whatsapp'] = preg_replace("/[^0-9]/", "", $data['whatsapp']); // use mutators

    $data['status']  = 'active';

    $data['profile']  = 'profissional';

   

    $user->update($data);

 

    return redirect()->route('profissionais');

}

Carlos Ferreira
Criador Ubiratan Lima 16/12/2023

coloquei um album com os prints. Perdão por enviar pelo whatsapp. não acontecerá mais... disponibilizei esse album no google, para facilitar o envio organizado.
https://photos.app.goo.gl/YoGd4sPH6Aw9WwmY6

Irei limpando quando as duvidas forem sendo solucionadas...

Ubiratan Lima
Criador Ubiratan Lima 16/12/2023

nessa linha:
$data['whatsapp'] = preg_replace("/[^0-9]/", "", $data['whatsapp']); // use mutators

mesmo que eu deixe, o numero puro. da o mesmo erro. se deixo formatado tambem da o mesmo erro.

Eu fiz um teste deixando tudo null, ele tambem não grava... passar por todo código e no momento de gravar não grava.

Ubiratan Lima
Manager Carlos Ferreira 16/12/2023

Qual erro? Print por favor

Carlos Ferreira
Criador Ubiratan Lima 16/12/2023

Ele não traz erros, apenas volta para a listagem, sem alterar nada. https://uploaddeimagens.com.br/imagens/uGdpPps

Se eu trocar $user->update($data) por $user->save($data) ele traz o erro do valor default do banco de dados.

Ubiratan Lima
Manager Carlos Ferreira 16/12/2023

Qual o retorno disso?

dd($user->update($data));

 

Deixou o código igual ao que te passei acima?

Carlos Ferreira
Criador Ubiratan Lima 16/12/2023
false // app/Http/Controllers/UserController.php:176

exatamenta na linha do codigo

dd($user->update($data));

 

Ubiratan Lima
Sabe a Solução? Ajude a resolver!

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!