Pesquisar na Comunidade
Mostrando resultados para as tags ''laravel básico''.
Encontrado 15 registros
-
Para trabalhar com o projeto PHP com um PC e um celular, eu criei dois usuários através de duas senhas na tbsupervariavel, que pode ser facilmente modificado com o MySQL. Já o Laravel é bem mais organizado. Ele criou uma tabela chamada users, e dentro dele tem email, password e outros campos. Não dá para modificar a senha pelo MySQL, se você fizer isso, o usuário nunca mais vai conseguir logar no Laravel. O password da tabela user não é um texto, não é um código hexadecimal tipo md5, é coisa bem particular só do Laravel. Logo, eu precisei buscar o código de atualização da senha no Google, e foi fácil encontrar: How to change password in laravel 9 (techtoolindia.com). Tentei implantar no meu projeto, e só tive problema no view, aonde o tutorial escreveu @extends('layouts.app') eu mudei para @extends('layout'). O maior problema é que o Laravel pede uma senha de pelo menos 6 caracteres. Isso é muito para mim, 4 caracteres é o ideal para mim. O meu projeto é simples, estou pensando em tirar o campo email, para facilitar o trabalho de login. Mas para alterar o número de caracteres, eu alterei essa função: class AuthController extends Controller{ public function postRegistration(Request $request){ $request->validate(['name' => 'required','email' => 'required|email|unique:users', 'password' => 'required|min:4',]);
-
Quando apertei o comando Logout na barra de navegação do Laravel ou na barra de navegação que eu criei, eu tive a resposta 404 Not Found. Levei cinco dias no Google para encontrar a resposta. O problema está na route que foi definido no arquivo web.php Route::get('', [AuthController::class, 'index'])->name('login'); Route::get('logout', [AuthController::class, 'logout'])->name('logout'); e também no método definido em AuthController: public function logout() {Session::flush();Auth::logout();return Redirect('login');} A sugestão que eu encontrei e que deu certo foi alterar o método: public function logout() {Session::flush();Auth::logout();return Redirect('');} Pelo que entendi, o melhor é não usar o apelido da rota, quando usar o comando redirect.
-
Para fazer o extrato do mês no MySQL Workbench, usei esse comando select * from tbdiario where (dia between '2022-11-01' and '2022-11-30' and contad=107) or (dia between '2022-11-01' and '2022-11-30' and contac=107) Depois de cinco horas pedindo ajuda para o Google, acabei conseguindo mudar a sintaxe do MySQL para o Laravel Eloquent, através do famoso método da tentativa e erro: $lctos=tbdiario::whereBetween('dia',['2022-11-01','2022-11-30'])->Where('contad',107)-> orWhereBetween('dia',['2022-11-01','2022-11-30'])->Where('contac',107)->get(); (**) Apesar desse forum ser destinado ao PHP, acredito que tenho mais chance de receber correções aqui do que nos grupos do Instragram ou do Google.
-
Depois de dois meses estudando o Laravel, hoje chegou a vez de ver o Laravel no celular. Eu digitei 192.168.0.12:8000 no navegador do celular, mas eu não consegui conectar. Consultando o Google, ele me informou que devo ativar o servidor do artisan assim: php artisan serve --localhost=192.168.0.12 Para acessar o Laravel pela internet, eu ainda não pesquisei se tem algum hospedeiro (gratuito) que usa esse programa, mas aqui no meu notebook eu posso usar o ngrok, ao invés de ativar para a porta 80, eu ativo para a porta 8000, assim: ngrok http 8000
-
Estou bastante contente com o Laravel, graças a ele descobri que o meu banco de dados Diário está completamente errado. Eu não tenho a menor ideia de como consertar o banco de dados. Assim, ao invés de fazer a coisa certa, eu vou persistir no erro. Ou seja, vou continuar estudando o Laravel, mesmo sabendo que o banco de dados e o código PHP estão bastante equivocados. Eu consegui fazer o balancete no PHP, mas o Laravel me obrigou a fazer o balancete no MySQL. O Laravel recebe o balancete no controller com essa instrução: $contas=vw_balanco::all(); Usando a função dd($contas) eu consegui enxergar uma impressionante espaçonave, cheio de alienígenas. Qual é o nome dessa espaçonave? Isto está no topo da página, o Laravel chama de Illuminate\Database\Eloquent\Collection. Eu sei como calcular a receita pelo Eloquent, mas nunca somei coisa alguma com o Collection. Pedi ajuda no Google, e eu cheguei nesse comando: $receita=$contas->whereBetween('conta',[301,304])->sum('final'); Ele funciona! Eu não tenho a menor ideia de como o Laravel consegue fazer, mas funciona! No PHP, eu precisei de dezenas e dezenas de linhas para chegar no mesmo resultado.
-
Eu encontrei na internet alguns exemplos de como usar o Eloquent para trabalhar com a soma de dois campos, mas o que eu precisava mesmo era somar a soma dos dois campos. Eu consegui fazer isso no PHP, mas não consegui adaptar no Eloquent. Usando o método da tentativa e erro, a minha saída foi montar o balancete no MySQL, coisa que eu não consegui no tempo do PHP. Ontem eu escrevi nesse fórum "o balancete" no tópico do MySQL, e hoje pedi para o Laravel usar o Eloquent e botar o balancete na apresentação. A apresentação deu certo, o problema são os valores, muitos deles são bem estranhos. Ou seja, vou ter que rastrear os valores desde o MySQL até chegar no Eloquent. Mesmo assim, aqui está o meu rascunho do Controller e do balancete.blade.php, dessa vez tudo parcial, apenas os trechos "operacionais": trecho do balancete.blade.php <div class=divteste> <table class='table table-striped linha'><tr><th><th align=left> <a >{{$mesextenso}} de {{$ano}}</a> </th><th align=right>Anterior<th align=right>Débito <th align=right>Crédito<th align=right>Saldo Atual @foreach($contas as $conta) <tr><td>{{{$conta->conta}}}<td nowrap>{{{$conta->descricao}}} <td align=right>{{{dec($conta->saldo)}}} <td align=right>{{{dec($conta->debito)}}} <td align=right>{{{dec($conta->credito)}}} <td align=right>{{{dec($conta->saldo + $conta->debito - $conta->credito)}}} @endforeach trecho do diarioController public function balancete(){ $apuracoes=vw_apuracao::all()->toArray(); $tudo=tbsupervariavel::all(); $mesextenso=$tudo->value('mesextenso'); $ano=$tudo->value('anoapurado'); $contas=vw_balanco::all(); return view('balancete',['menu'=>'Balancete','mesextenso'=>$mesextenso,'ano'=>$ano],compact('apuracoes','contas'));}
-
SQLSTATE[42000]: Syntax error - SELECT list is not in GROUP BY
uma questão postou Frank K Hosaka PHP
Eu tenho uma aplicação chamada balancete.php e decidi converter em Laravel. Copiei o mesmo arquivo no diretório views com o nome de balancete.blade.php, bem como criei uma rota e um método no controlador para dar vida ao código. Para não gerar erro, eu comentei o código assim <!--, ou seja, o Laravel não vai exibir nada. O método balancete que eu criei no controlador ficou assim: public function balancete(){ $apuracao=vw_apuracao::all(); return view('balancete',['menu'=>'Balancete'],compact('apuracao'));} Ao invés do Laravel mostrar uma tela em branco, ele devolveu uma enorme mensagem de erro, aqui eu vou resumir: SQLSTATE[42000]: Syntax error - SELECT list is not in GROUP BY incompatible with only_full_group_by option Para resolver o problema, usei o método da tentativa e erro. O vw_apuração é a soma de duas tabelas, a tbdiario e a tbconta. Criei um model para cada tabela, supondo que o model vw_apuração não seria suficiente para o Laravel trabalhar. Mas isso não resolveu o problema. Deixei o método da tentativa e erro de lado, e usei "only_full_group_by option Laravel" no motor de busca do Google, e ele me ofereceu essa opção: if you want to disable this in Laravel you have to change the 'strict' value to false in your database configuration in config/database.php. 'connections' => [ ... 'mysql' => [ ... 'strict' => false, ... ], ] A sugestão do Google deu certo! O melhor jeito de aprender a usar o Laravel é a tentativa e erro, mas fazer o Laravel funcionar o método Google é bem melhor. -
Eu usei o tutorial Laravel 9 Create Custom Helper Function in Tutorial (onlinewebtutorblog.com) e consegui criar a minha primeira função personalizada. No diretório app, criei o arquivo helpers.php assim: <?php function dec($num){return number_format($num,2,',','.');} A seguir, eu alterei o parâmetro autoload do composer.json assim: "autoload": { "psr-4": { "App\\": "app/", "Database\\Factories\\": "database/factories/", "Database\\Seeders\\": "database/seeders/" },"files":["app/helpers.php"] }, Finalmente fui no painel do terminal do Visual Studio Code, e digitei o comando composer dump-load Usei a função dec num controlador, e deu tudo certo. Só a primeira função personalizada é que precisa seguir esse ritual. As outras funções podem ser acrescentadas diretamente no arquivo helpers.php. Eu fiz o teste, acrescentei uma nova função no helpers.php e ele ficou assim: <?php function dec($num){return number_format($num,2,',','.');} function deca($num){if($num==intval($num)){return $num;} else {return dec($num);}} Note que a segunda função chama a primeira função. A função dec formata preço e valores monetários no padrão brasileiro (sem o cifrão). Já a função deca formata a quantidade, se for inteiro não muda nada, se tiver ponto flutuante ele trabalha com duas casas decimais, mas usando a vírgula como ponto flutuante.
-
Lá em 1990 eu comecei o projeto Diário no MS Access, em 2020 traduzi na linguagem PHP e agora em 2022 pretendo traduzir na linguagem Laravel. Faz dois meses que eu tento fazer os códigos funcionarem, tudo na base da tentativa e erro, eu não consigo acompanhar os tutoriais do YouTube; para mim, o PHP já é suficiente, mas o Laravel é importante para eu aprender o que é servidor e cliente pois ele trabalha com o tripé roteador, controlador e visualizador. Eu gostei bastante do esquema Eloquent, apesar do Eloquent presumir que o nome das minhas tabelas está no plural, e isso me força a informar que não está. Ao contrário do mysqli do PHP, o Eloquent força a alterar o meu banco de dados. Numa das tabelas ele me obrigou a criar o campo created_at, sob pena do Laravel não fazer o que eu quero. O mais bacana é que eu abri um projeto do Laravel dentro da pasta do OneDrive, eu não preciso me preocupar com a cópia de segurança. Tudo o que eu fizer no projeto, o OneDrive vai dar um jeito de sincronizar no servdor da Microsoft. Finalmente, o orçamento é um desafio para todo programador, além do clássico "Hello World". A seguir eu fiz um pequeno rascunho de como pretendo implantar o orçamento no Laravel, tem muita coisa que eu já fiz, mas eu vou publicar apenas os trechos que acho mais relevante: routes>web.php ---------------------------------- <?php use Illuminate\Support\Facades\Route; use App\Http\Controllers\PacientesController; use App\Http\Controllers\diarioController; Route::get('astudy',[diarioController::class,'astudy']); app>Http>Controllers>diarioController.php ---------------------------------------------- <?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; use App\Models\tbsupervariavel; use App\Models\tbpedido; use App\Models\tbpessoa; use App\Models\vw_histped; use App\Models\tbprod; class diarioController extends Controller { public function astudy(request $request){ $prods=tbprod::orderBy('prod')->get(); $produto=$request->input('produto'); $qt=$request->input('qt'); if($qt){ $precoa=tbprod::where('prod',$produto)->get()->toArray(); $preço=$precoa[0]['custo']; $total=$preço*$qt; } else { $preço=null; $total=null; } return view('astudy',['produto'=>$produto,'qt'=>$qt,'preço'=>$preço,'total'=>$total],compact('prods'));} resources>views>astudy.blade.php ----------------------------------------------- <form> <table> <th>Produto<th>Qt<th>Preço<th>Total <tr> @if(isset($_GET['produto'])) <td>{{$produto}} @else <td><input name=produto list=produto> <datalist id=produto> @foreach($prods as $prod) <option value='{{$prod->prod}}'> @endforeach </datalist> @endif @if(isset($_GET['qt'])) <td>{{$qt}} @else <td><input name=qt onchange=submit()> @endif <td>{{$preço}}<td>{{$total}} </table> </form> app>Models>tbprod.php ------------------------------------------------------ <?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class tbprod extends Model { use HasFactory; protected $table='tbprod'; } .env ------------------------------------------------------- DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=diario DB_USERNAME=root DB_PASSWORD=
-
Eu tenho uma gigantesca dúvida na documentação do Laravel e mais ainda com os tutoriais espalhados na internet, assim só me restou o método da tentativa e erro para tentar colocar uma tabela do MySQL dentro do Laravel. O nome da tabela é tbsupervariavel, para colocá-lo dentro do Laravel usei o comando "php artisan make:model tbsupervarivel" no terminal do VS Code. O artisan criou o seguinte arquivo: <!-- primeiro.app.Models.tbsupervariavel.php --> <?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class tbsupervariavel extends Model{ use HasFactory; protected $table= 'tbsupervariavel';} A última linha fui eu que coloquei, senão o Laravel iria considerar a tabela no plural "tbsupervariavels". O Laravel tem razão, o nome da minha tabela está errada, deveria ser plural e não singular. O grande problema é que eu não consegui encontrar um tutorial de como usar a tabela na controlador. Eu usei assim: <!-- primeiro.app.Http.Controllers.diarioController.php --> namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; use App\Models\tbsupervariavel; class diarioController extends Controller { public function index(request $request) { $senhadb=tbsupervariavel::where('codsuper',1)->value('senha'); $senha=$request->input('senha'); $menu="Menu"; if($senha==1045){$request->session()->put('senha','parcial');return view('menu',['menu'=>$menu]);} if($senha==$senhadb){$request->session()->put('senha','completa'); return view('menu',['menu'=>$menu]);} if(empty($senha)){$mensagem="";} else {$mensagem="Senha incorreta";} } return view('index',['mensagem'=>$mensagem]); } Para o controller acessar o banco de dados do Eloquent, eu precisei acrescentar "use App\Models\tbsupervariavel;". Eu ainda não estou familiarizado com a gramática do Laravel, mas estou muito contente por ter conseguido fazer a consulta na tabela. Foram cinco dias de tentativa e erro, e muito tutorial chato de assistir e entender.
-
Depois de quase um mês batendo a cabeça na parede, finalmente eu consegui publicar uma tabela no navegador pelo Laravel. Aliás, a tabela também foi a primeira coisa que eu consegui publicar no PHP, aqui usei o famoso método da tentativa e erro. Eu desisti de ver o YouTube e comecei a usar as minhas improvisações e mudei o escopo do Laravel, ao invés de ser um poderoso framework, eu decidi que ele vai ser um simples repositório do PHP. Olha só que beleza: resources.views.menu.blade.php ------------------------------------------------------------------ <table> <tr><td ><a onclick=location.replace('orcamento')>Orçamento</a> <tr><td ><a onclick=location.replace('orcamentoantigo')>Orçamento Antigo</a> <tr><td><a onclick=location.replace('pessoa')>Pessoa</a> <tr><td><a onclick=location.replace('produto)>Produto</a> <tr><td><a onclick=location.replace('compra)>Pedido de Compra<a> @if (session('senha')=="completa") <tr><td><a onclick=location.replace('diario.)>Diário</a> <tr><td><a onclick=location.replace('balancete?balancete')>Balancete</a> <tr><td><a onclick=location.replace('pagar')>Pagar</a> <tr><td><a onclick=location.replace('entraproduto')>Entrada por lote</a> @endif </table> Para botar o view no navegador, usei o seguinte controlador: app.Http.Controllers.diarioController.php --------------------------------------------------------------------------------- <?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; class diarioController extends Controller { public function index(request $request) { $select=DB::Select("Select * from tbsupervariavel"); $senhadb=$select[0]->senha; $senha=$request->input('senha'); if($senha==1045){$request->session()->put('senha','parcial');return view('menu');} if($senha==$senhadb){$request->session()->put('senha','completa'); return view('menu');} if(empty($senha)){$mensagem="";} else {$mensagem="Senha incorreta";} return view('index',['mensagem'=>$mensagem]); } } Para o navegador chegar no controlador (depois de ativar o "php artisan serve" e usar o comando "localhost:8000"), usei a seguinte rota: routes.web.php ------------------------------------------------------------- <?php use Illuminate\Support\Facades\Route; use App\Http\Controllers\PacientesController; use App\Http\Controllers\diarioController; Route::get('/',[diarioController::class,'index']); Route::post('/',[diarioController::class,'index']); Finalmente, para eu poder trabalhar com um banco de dados dentro do controlador, precisei definir o .env assim .env --------------------------------------------------- DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=diario DB_USERNAME=root DB_PASSWORD= Você só consegue a gostar do Laravel só quando ele começa a fazer o que você pede. Ops, tem mais um código que esqueci de publicar: resources.views.index.blade.php ------------------------------------------------------------------ <form method=post> @csrf <input type="password" name="senha" placeholder="senha" autofocus><p> <input type="submit" value="Confirmar"><p> </form> <label>{{$mensagem}}</label>
-
Em 2020, o João Ribeiro fez um excelente vídeo sobre o Laravel. Eu estou estudando o vídeo Laravel #061 (Laravel - 061 - Preparando um projeto para exercício de login - parte 1 - YouTube) e o Laravel #062 (LARAVEL #062 CONSTRUÇÃO DO FORMULÁRIO DE LOGIN E ROUTES - YouTube). O correto é começar o estudo pelo vídeo #001, mas a minha prioridade não é o Laravel e sim o PHP. O meu problema com o PHP é que eu não sei nada de HTML, eu só sei usar <input> e <table>. Aqui no fórum, eu precisei aprender a usar o <div> para trabalhar com modal. Já o João Ribeiro sempre bate na mesma tecla: para estudar o Laravel você precisa saber o que é classe, o que é HTML e o que é PHP. Eu não sei nada disso, mas graças ao João Ribeiro eu já aprendi a usar a tecla <k> para parar e executar o YouTube, também aprendi a usar a tecla ! no Visual Studio Code para montar um HTML básico, e o tutorial do João Ribeiro sempre confronta o código com o que aparece na tela do navegador, ou seja, o vídeo é bastante didático e eu já aprendi muita coisa. O problema é que o resultado não é o mesmo. O João Ribeiro usa a versão 8, e eu estou usando a versão 9 do Laravel. Ele conseguiu fazer a rotina Route funcionar, mexendo no código RouteProviderServices.php, mas o meu código é bem diferente. Assim precisei usar o Google para saber como o Route vai enxergar o Controller em 2022, e um dos rapazes deu a dica de usar todo o espaço de trabalho na linha do código do Route até chegar na classe desejada, e a dica dele funcionou e assim consegui acompanhar o vídeo do João Ribeiro. Nesses dois vídeos em particular, o João Ribeiro tenta ensinar como montar uma página HTML para fazer a tela de login. O João gravou na pasta public, o Bootstrap CSS e o JQuery JS. Eu já preferi colocar todo o link no <link> e <script>. Resultado: a minha página não saiu nada igual ao do João Ribeiro. Mesmo assim, valeu a pena ver o vídeo, eu ainda não aprendi como montar uma página HTML de login, mas eu achei muito engenhoso a teconologia do Laravel, o de usar duas páginas HTML para montar uma página. No tempo do PHP, eu aprendi a colocar um <input> dentro de um HTML, já o Laravel é capaz de botar um HTML dentro de um outro HTML. O chato é como configurar o Laravel para fazer o HTML carregar o código CSS lá da internet e não dentro de suas pastas.
-
Depois que eu aprendi a instalar o Laravel básico pelo Composer, eu pensei em levar todo o meu projeto PHP para o novo ambiente de trabalho. Como eu ainda não sei como usar o Visual Studio Code, eu usei o Windows Explorer, copiei o arquivo index.php e colei na pasta views, e renomeiei o arquivo de index.blade.php, e alterei a rota no arquivo web.php assim: routes > web.php ------------------------------------------------------------ <?php use Illuminate\Support\Facades\Route; use App\Http\Controllers\DiarioController; Route::get('/', function () {return view('index');}); Ativei o servidor pelo comando "php artisan serve", fui no navegador e digitei "localhost:8000", e a experiência deu certo! Fiquei tão contente que fui logo copiando o arquivo menu.php na pasta views. Digitei a senha, mas a resposta foi "404 not found". Mudei o nome do arquivo para "menu.blade.php", mas não deu certo. Mudei o código do index.php, onde estava <form action=menu.php>, eu mudei para <form action=menu>, mas não deu certo. Então, acrescentei mais uma rota no web.php, assim: <?php use Illuminate\Support\Facades\Route; use App\Http\Controllers\DiarioController; Route::get('/', function () {return view('index');}); Route::get('/menu',function () {return view('menu');}); Finalmente, o index conseguiu abrir o menu, o problema é a nova mensagem do Laravel The POST method is not supported for this route. Foi no Google, e a tradução correta é essa: o Laravel não suporta gambiarra.
-
Finalmente eu descobri o que eu fiz de errado nesses dois últimos dias, quando o Laravel reclamou que a variável não estava definida. Depois de muita tentativa, acabei descobrindo que o erro era de sintaxe. Ao invés de usar @foreach($post as $post), eu simplesmente esqueci do @. Aqui a listagem do meu pequeno projeto de listar dez registros de uma tabela: routes>web.php ------------------------------------------------------------- <?php use Illuminate\Support\Facades\Route; use App\Http\Controllers\DiarioController; Route::get('/vwdiario',[DiarioController::class,'index'])->name('post.index'); app>Http>Controllers>DiarioController.php -------------------------------------------------------------- <?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; class DiarioController extends Controller { public function index() { $posts= DB::select("select * from tbdiario limit 10"); return view('vwdiario',compact('posts'));}} resources>views>vwdiario.blade.php --------------------------------------------------------------- <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Diário</title> </head> <body> <h1>Os primeiros dez registros</h1> <table> @foreach($posts as $post) <h4><tr><td>{{$post->docto}}<td>{{$post->dia}}<td>{{$post->conta}} <td>{{$post->debito}}<td>{{$post->credito}}<td>{{$post->hist}}</h4> @endforeach </table> </body> </html> .env -------------------------------------------------- DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=diario DB_USERNAME=root DB_PASSWORD=
-
Ontem, eu encontrei um vídeo no YouTube que me incentivou a continuar o meu projeto de migrar do PHP para o Laravel: Laravel 8 tutorial - Database configuration and Fetch Data - YouTube. Existem muitos tutoriais por aí, mas quase todos eu recebi mensagem de erro, e eu não sei como resolver esse tipo de problema. Eu desisti de instalar o Laravel Sail, e decidi só ficar com o Laravel. Ou seja, eu tirei o Ubuntu do Windows bem como desativei o WSL e Plataforma de Máquina Virtual pelo Painel de Controle (no item recursos do Windows). Para ter um Laravel básico, basta os programas Visual Studio Code e o Composer. Depois de apanhar bastante, eu aprendi que é possível conectar o Laravel básico com o banco de dados, o problema é achar um bom tutorial que ensine como fazer isso. O vídeo que estou indicando é um dos poucos que funcionou no meu laboratório. Aqui o rapaz só usa o controller e o route e assim eu aprendi que é necessário informar ao Laravel onde está o controller através do comando use. Os outros vídeos não funcionaram, mas mostraram a maravilha que é montar um blade.php na pasta resources/views, nesse ambiente você pode misturar HTML e o PHP sem se preocupar em separar quem é quem, basta seguir a nova gramática do PHP que recebeu o apelido de Laravel. Se o Arquiteto me ajudar, ainda vou conseguir montar um view que funcione!