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

O meu primeiro acesso ao banco de dados pelo Eloquent


Frank K Hosaka

Pergunta

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.

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Eu já criei um model para a tbpedido, outro para a tbpessoa, e agora estou começando a traduzir o meu código orçamento.php apenas como um método do diarioController.

O que me assustou foi a quantidade de informações que eu preciso passar do Controller para o View, ficou uma listagem enorme, difícil de apurar. Mais difícil é procurar um tutorial que explique como passar um monte de informações do Controller para o View, e depois de dois dias de pesquisa aprendi a usar o Collections do Laravel.

O método orçamento ainda está no começo, mas pela lista dá para ver como eu usei o recurso do Collections:

primeiro.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;
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]); }
public function orcamento(){
   $ped=tbsupervariavel::where('codsuper',1)->value('ped');
   $collectionA=collect(['menu'=>'Menu','ped'=>$ped]);
   tbsupervariavel::where('codsuper',1)->update(['end'=>'orcamento']);
   $detalhe=tbpedido::where('ped',$ped)->get()->toArray();
   $codp=$detalhe[0]['codp'];
   $diaped=$detalhe[0]['dia'];
   $total=$detalhe[0]['total'];
   $collectionB=collect(['codp'=>$codp,'diaped'=>$diaped,'total'=>$total]);
   $merged=$collectionA->merge($collectionB);
   $merged=$merged->all();
   return view('orcamento',$merged);
}
}

 

Link para o comentário
Compartilhar em outros sites

  • 0

Hoje acrescentei a tbpessoa no controller do orçamento, mas ao invés de acrescentar o resultado da consulta em Collections do Laravel, eu mandei o resultado junto com Collections na linha do return. E deu certo!

app.Http.Controllers.diarioController (listagem parcial)
--------------------------------------------------------------------------------------
public function orcamento(){
   $ped=tbsupervariavel::where('codsuper',1)->value('ped');
   $collectionA=collect(['menu'=>'Menu','ped'=>$ped]);
   tbsupervariavel::where('codsuper',1)->update(['end'=>'orcamento']);
   $detalhe=tbpedido::where('ped',$ped)->get()->toArray();
   $codp=$detalhe[0]['codp'];
   $diaped=$detalhe[0]['dia'];
   $total=$detalhe[0]['total'];
   $collectionB=collect(['codp'=>$codp,'diaped'=>$diaped,'total'=>$total]);
   $pessoa=tbpessoa::where('codp',$codp)->get()->toArray();
   $pessoa1=$pessoa[0];
   $merged=$collectionA->merge($collectionB);
   $merged=$merged->all();
   return view('orcamento',$merged,$pessoa1);
}

O comando que eu mais uso no Laravel é o "dd($variavel);" para verificar se eu consegui montar um array que seja legível para o view.

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,5k
×
×
  • Criar Novo...