Pesquisar na Comunidade
Mostrando resultados para as tags ''php laravel''.
Encontrado 8 registros
-
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.
-
Ontem eu vi o projeto Chirp do Laravel, mas dessa vez eu usei o caminho do Inertia/Vue, ele é completamente diferente do Blade, mas ambos terminam com a sofisticada rotina de notificação. O Chirp tem muita coisa para ensinar, e o máximo que eu consegui aprender é pegar as informações do <form> e mandar direto para o banco de dados para acrescentar ou editar. O Chirp tenta ensinar a autenticar e validar os dados, isso eu ainda não aprendi, mas o projeto Chirp é muito bacana, onde só você pode acrescentar, editar ou deletar as mensagens que são suas. A dos outros, você não pode fazer nada disso. Eu não consegui testar a rotina de notificação, pois ele pede para conectar o PHP no serviço de email, e isso eu ainda não sei fazer. O máximo que eu consegui com o PHP foi colocar o orçamento na tela do navegador. Agora estou pensando em pedir para o PHP transformar as informações da tela do navegador em pdf, pegar o número do celular do cliente e o mandar o pdf pelo WhatsApp. Alguém aqui já viu alguém tentando fazer essa mágica com o PHP ou Laravel?
-
Ontem eu usei o método Find do Laravel pela primeira vez, e eu gostei muito dele, e só agora é que eu consigo enxergar a diferença entre o PHP e o Laravel. Para saber a descrição de um produto, a gramática do MySQL é Select produto from tabela_produto where codigo = @codigo. A gramática do PHP é assim $query=$mysqli->query("select produto from tabela_produto where codigo = $codigo"); E a gramática do Laravel é assim $produto=tabela_produto::where('codigo',$codigo)->value('produto'); O problema dessa gramática é que ele sempre precisa estar conectado no banco de dados. Tanto o PHP quanto o Laravel são capazes de jogar toda a tabela de produtos no terminal do cliente. A pergunta é: como o cliente vai consultar a tabela? No caso do PHP, o desenvolvedor vai precisar da tecnologia do JavaScript. Mas o Laravel já tem uma gramática mais robusta, olha só que bacana: Model class tbprod extends Model{ use HasFactory; protected $table="tbprod"; protected $fillable=['prod','custo','codforn','marg','loc','emb','cf','codbar']; protected $primaryKey="codprod"; public function vinculados(){return $this->hasMany(tbprod::class,'codforn','codforn');}} Controller Public Function inicio(Request $request){ $produtos=tbprod::all(); $vinculados=tbprod::with('vinculados')->where('codforn','like','{%')->orderBy('prod')->get(); return view('multiplo',compact('produtos','vinculados')); } Blade <table class="table table-striped"> @foreach($vinculados as $vinc) <tr><td>Produto Principal<td>{{$produtos->find(json_decode($vinc->codforn)->cod)->prod}} <tr><td>Produto Vinculado<td>{{$vinc->prod}} @endforeach </table> Eu adaptei o meu código baseado numa sugestão do Lary do Laracasts, mas ele apagou a sugestão, e assim não sei se é necessário a "relação" vinculados que foi definido no Model. O importante é o arquivo blade, onde usei pela primeira vez o método find. A tabela produto tem o campo codforn, por exemplo, "banana dúzia", codprod=15, codforn=1234. Depois eu criei o produto "banana peça", codprod=16, codforn='{"cod":15,"conv":12}'. A banana peça está amarrado com o código 15. Para saber quem era o código 15, eu forçava o Blade a conectar com o banco de dados assim {{app\models\tbprod::where('codprod',$codprod)->value('prod')}} e essa conexão era repetida tantas vezes para quantos produtos vinculados houvesse. Já o find faz o mesmo serviço, mas sem precisar de nenhuma conexão.
-
Eu tenho uma função chamada pagar, mas eu gostaria que só o usuário com o id=1 tivesse acesso a essa função. Hoje eu encontrei uma solução, não sei se é correto, mas ele funcionou para mim. No PHP eu coloquei a seguinte instrução: if($_SESSION['id']!==1){header('location:menu.php');} No Laravel, eu usei essa instrução: if(auth::id()!==1){return redirect('menu');}
-
Esse é o método GET no PHP: <?php $mysqli=new mysqli("localhost","root","","astudy"); if(isset($_GET['up'])){ $novotexto=$_GET['up']; $query=$mysqli->query("update teste set texto='$novotexto' where id=1");} $query=$mysqli->query("select texto from teste where id=1"); $texto=$query->fetch_assoc()['texto']; echo " <form> <input name=up value=$texto> <input type=submit> </form>"; Para fazer um código equivalente no Laravel, você precisa definir o Route, o Model, o Controller e o Blade, aqui só vou listar os dois últimos: teste.blade.php <form> <input name=up value={{$texto}}> <input type=submit> </form> testeController <?php namespace App\Http\Controllers; use App\Models\teste; use Illuminate\Http\Request; class testeController extends Controller { public function teste (Request $request){ if($request->input('up')){ $up=$request->input('up'); teste::where('id',1)->update(['texto'=>$up]);} $texto=teste::where('id',1)->value('texto'); return view('teste',['texto'=>$texto]); } } Os dois códigos funcionam somente se você colocar qualquer coisa na caixa do <input>, mas se você não colocar nada, só o código do PHP é que funciona. Para fazer o GET funcionar no Laravel eu fiz uma tremenda gambiarra e já fiz ele funcionar. O problema é o PHP, como ele consegue definir o valor da variável $_GET['up'], se o indexador só tem um lado da equação assim "up=". O PHP é fascinante!
-
Eu criei o projeto PHP em 2020, antes disso ele se chamava projeto MS Access 1990. O MS Access já tem uma rotina pronta para autenticar a senha, esse não é o caso do PHP. No caso do PHP, eu fiz essa gambiarra: if(!$row){$_SESSION['mensagem']="email incorreto";header("location:index.php"); Ele nunca funcionou! Lá em 2022 eu comecei a estudar o Laravel e eu conheci um facilitador chamado middleware. Ele é bacana, bastante funcional, mas não me ajudou a consertar o projeto PHP, o middleware é tão obscuro quanto a rotina de autenticação do MS Access. Finalmente, em 2023, eu tomei coragem e usei o poderoso "var_dump(!$variavel);exit;" aqui e ali até achar o erro, até eu chegar nessa linha: if(!$row){$_SESSION['mensagem']="email incorreto"; header("location:index.php");var_dump($row);exit; Para a minha surpresa, a rotina funcionou, depois de três longos anos! É óbvio que não foi o var_dump que consertou o erro, mas sim o comando exit. Ou seja, o comando header não funciona, se você não fizer o programa parar. Que coisa!
-
No começo do manual do Laravel 10 tem o projeto Chirps, e lá encontrei a seguinte rota: Route::resource('chirps',ChirpController::class) ->only(['index','store','edit','update','destroy']) ->middleware(['auth','verified']); Ou seja, se você digitar no navegador localhost:8000/chirps, você vai parar na tela do login. Para proteger os meus códigos em laravel, eu usei esse esquema: Route::middlaware(['auth','verfied])->group(function(){ ... }); ou seja, eu ajuntei todas as minhas rotas dentro de uma rota maior. Para proteger ainda mais os códigos em Laravel, eu fui em config\session.php e alterei 'expire_on_close' => true, ou seja, assim que você fecha o navegador, você está automaticamente deslogado. O Laravel parece bacana, ele simplifica o que parece ser bem complicado. O problema é que no Hostinger eu tenho tanto o projeto PHP como o Laravel, mas eu não faço a menor ideia de como fazer essa tecnologia funcionar no mundo do PHP. Alguém tem um tutorial para me indicar?
-
Ontem eu estava escrevendo um código num arquivo blade.php no Laravel, e tentei escrever $vetor->Amaral e eu recebi a mensagem de erro. Então, mudei para $vetor['Amaral'] e também recebi mensagem de erro. Para saber o que eu estava fazendo de errado, eu usei o comando dd($vetor); e o Laravel exibiu um enorme painel cheio de informação chamado Collections. O PHP, até eu onde eu sei, não tem esse recurso chamado Collections. O máximo que ele tem é um json, e montei esse código para saber a diferença entre um vetor e um objeto: <?php $vetor=[0=>["Amaral"=>"Ellen"]]; var_dump($vetor); // array 0=> array 'Amaral' => string 'Ellen' $subvetor=$vetor[0]; echo $subvetor['Amaral']; // Ellen $json=json_decode(json_encode($vetor)); var_dump($json); // array 0=> object(stdClass) public 'Amaral' => string 'Ellen' $subjson=$json[0]; echo $subjson->Amaral; // Ellen Através desse código, é fácil perceber que não dá para obter o valor da chave Amaral com o comando $vetor['Amaral'] ou $vetor->Amaral, isso porque o Amaral não é a chave do $vetor. O Amaral é a chave de um outro vetor que está dentro de outro vetor. E só dá para usar a gramática $chave->valor se você estiver trabalhando com um objeto e não com um vetor. Para saber quem é vetor e quem é objeto, só o comando var_dump é capaz de mostrar a diferença, ele diz em que parte o objeto é um vetor (array) ou objeto. Estudar Laravel é muito bom. Eu ainda não sei o que é um "framework", mas a cada dia aprendo a gostar cada vez mais do PHP.