Ir para conteúdo
Fórum Script Brasil
  • 0

Aleluia! Descobri o enigma do valor nulo no banco de dados.


Frank K Hosaka

Pergunta

Faz quase duas semanas que eu encontrei um valor nulo no banco de dados, onde eu não esperava. No PHP, eu tinha o seguinte código:

$vendido=date('Y-m-d');
$horavenda=date('Y-m-d H:i');
$query=$mysqli("update tbpedido set vendido='$vendido', 'horavenda'=$horavenda" where ped=2023);

Não há como passar um valor nulo nessas condições.

Depois de duas semanas, é que eu lembrei que o meu irmão tem acesso ao meu projeto Laravel, que basicamente é um xerox do projeto PHP.

Mas não é. No controller eu encontrei isso:
 

$vendido=date('Y-m-d H:i');
tbpedido::where('ped',2023)->update(['vendido'=>$vendido]);

Ou seja, no Laravel eu esqueci de definir o valor da hora da venda, e foi assim que o banco de dados ficou com o valor nulo.

Outro erro bastante grave é o princípio da atomicidade. Data da venda e hora da venda é a mesma coisa no mundo do banco de dados, não há porque ter dois campos para mostrar o mesmo valor. Para separar data da hora, isso dá para fazer com o comando: data da venda = date('d/m/Y',strtotime($vendido)) e hora da venda = date('H:i',strtotime($vendido)).

Mesmo assim, estou contente por ter encontrado um erro em apenas duas semanas. Geralmente eu gastava vários meses.

Editado por Frank K Hosaka
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Eu pedi ajuda para a turma do Laracasts sobre a possibilidade de eu trabalhar com apenas um campo, ao invés do Vendido (tipo data) e do HoraVenda (tipo data tempo), mas dessa vez eu não consegui nenhum resultado. No PHP é possível trabalhar com apenas um campo, porque o controlador e o visualizador fica tudo misturado no mesmo código. Já no Laravel, o controlador e o visualizador são peças separadas. Claro que é possível executar várias consultas dentro do visualizador, mas esse não é o propósito do Laravel.

Para rodar a consulta somente no controlador, eu precisaria mandar os dados do pedido junto com a relação dos pedidos para cada data, e isso só é possível através de um relacionamento, e o relacionamento só funciona se o campo em referência for do tipo data e não data tempo.

Link para o comentário
Compartilhar em outros sites

  • 0

Um rapaz no Laracasts comentou que estou usando indevidamente o relacionamento da tabela, ele disse para não jogar todo o banco de dados no visualizador, ele orientou a só mandar o agrupamento de datas no visualizador com a respestiva soma. Se alguém quiser mais detalhes, basta clicar na data que o controlador vai montar os detalhes daquela data e devolver no visualizador.

A idéia é bem simples. Não precisa de nenhum relacionamento, o visualizador só vai ter a informação que o usuário precisa, e a tabela pode trabalhar com apenas um campo com a data e a hora da venda. As soluções mais simples são as melhores.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...