laravelbrasil / forum

Ama Laravel? Torne se um Jedi e Ajude outros Padawans
GNU General Public License v3.0
252 stars 13 forks source link

banco de dados #141

Open ghost opened 7 years ago

ghost commented 7 years ago

olá galera, estou com um problema que já esta me tirando do serio, vi vários tutoriais e ainda não consegui fazer então decidi postar a duvida aqui pra ver se alguém meda uma luz, estou criando um formulário de registro de produtos para revenda mas não estou conseguindo pegar os dados no banco de dados, eu vi alguns tutoriais e tudo mais e criei as aplicações, o site esta conectado com o banco mas não consigo atribuir uma variável com os dados que estão no banco de dados.

mgsistemas commented 7 years ago

Vc gerou os models?

Os dados são providos pelos models.

Se for obter todos os produtos, um exemplo:

Class Produto extends Model

{

Public function todos()

{

   // retorna todos os produtos sem filtro

  $produtos = Produto::all();

  Return $porodutos;

}

Public function getProduto($id_produto)

{

   // exemplo com filtros usando o DB

  $produto = DB(‘produtos)

  ->where(‘id’,’=’,$id_produto)

->get();

   Return $produto;

}

}

Atenciosamente

Marcelo Gomes

MG Consultoria e Serviços em TI

Tel.: +55 (11) 2214-3585 / Móvel: +55 (11) 9 8364-3775

http://www.mgconsultoriainformatica.com.br

TrabalhoEmDia.com

A evolução na forma de trabalhar

https://www,trabakhoemdia.com

De: ynosbear [mailto:notifications@github.com] Enviada em: terça-feira, 26 de setembro de 2017 14:20 Para: laravelbrasil/forum Cc: Subscribed Assunto: [laravelbrasil/forum] banco de dados (#141)

olá galera, estou com um problema que já esta me tirando do serio, vi vários tutoriais e ainda não consegui fazer então decidi postar a duvida aqui pra ver se alguém meda uma luz, estou criando um formulário de registro de produtos para revenda mas não estou conseguindo pegar os dados no banco de dados, eu vi alguns tutoriais e tudo mais e criei as aplicações, o site esta conectado com o banco mas não consigo atribuir uma variável com os dados que estão no banco de dados.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/laravelbrasil/forum/issues/141, or mute the thread https://github.com/notifications/unsubscribe-auth/AIZeFNDDBszmQEIQpHZaAeiFXHi_2mcAks5smTIqgaJpZM4PkmFa .

ghost commented 7 years ago

ainda nao consegui olha só meu codigo model

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Coisas extends Model
{
    public function todos()
    {
        $coisas=coisas::all();
        return $coisas
    }
}

meu controller

<?php

namespace App\Http\Controllers;

use App\http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Coisas;

class formulario extends Controller
{
    private $coisas;

    public function __construct(coisas $coisas)
    {
        $this->coisas = $coisas;
    }
    public function index()
    {
        $coisas = $this->coisas->all();

        return view('form')->with('coisas',$coisas);
    }
}

minha view

<ul>

    @foreach($coisas as $coisa)
        <li>{{ $coisa->nome}}</li>
    @endforeach
</ul>

meu erro image

ghost commented 7 years ago

bom funcionou mas n tem uma forma mais simples de eu pegar os dados q essa eu vou ter que fazer um construct pra cada variavel?

mgsistemas commented 7 years ago

O erro diz que o seu model “Coisas” não existe.

Certifique-se que ele se encontra no diretório e namespace devido.

Minha sugestão para o controller

<?php

namespace App\Http\Controllers;

use App\http\Controllers\Controller;

use Illuminate\Http\Request;

use App\Coisas;

class formulario extends Controller

{

public function index()

{

    $coisas = Coisas::paginate(); // assim poderá criar paginação na view

    return view('form')->with('coisas',$coisas);

    // eu geralmente uso compact

    return view(‘form’, compact(‘coisas’);

}

}

Atenciosamente

Marcelo Gomes

MG Consultoria e Serviços em TI

Tel.: +55 (11) 2214-3585 / Móvel: +55 (11) 9 8364-3775

http://www.mgconsultoriainformatica.com.br

TrabalhoEmDia.com

A evolução na forma de trabalhar

https://www,trabakhoemdia.com

De: ynosbear [mailto:notifications@github.com] Enviada em: quarta-feira, 27 de setembro de 2017 10:47 Para: laravelbrasil/forum Cc: MG Consultoria Informática; Comment Assunto: Re: [laravelbrasil/forum] banco de dados (#141)

ainda nao consegui olha só meu codigo model

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Coisas extends Model

{

public function todos()

{

    $coisas=coisas::all();

    return $coisas

}

}

meu controller

<?php

namespace App\Http\Controllers;

use App\http\Controllers\Controller;

use Illuminate\Http\Request;

use App\Coisas;

class formulario extends Controller

{

    private $coisas;

    public function __construct(coisas $coisas)

    {

           $this->coisas = $coisas;

    }

public function index()

{

    $coisas = $this->coisas->all();

    return view('form')->with('coisas',$coisas);

}

}

minha view

meu erro [image: Descrição: Imagem removida pelo remetente. image] https://user-images.githubusercontent.com/32100615/30916989-385bc012-a371-11e7-8f79-58a9876f304a.png

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/laravelbrasil/forum/issues/141#issuecomment-332526230, or mute the thread https://github.com/notifications/unsubscribe-auth/AIZeFBDF4Yz6x3MAaTStjabiyqXytBTDks5smlHrgaJpZM4PkmFa .[image: Descrição: Imagem removida pelo remetente.]

ghost commented 7 years ago

acertei o codigo mas agora estou com outra duvida como faço para importar varios dbs para minha view por exemplo assim funciona

class formulario extends Controller
{
    private $coisas;

    public function __construct(coisas $coisas)
    {
        $this->coisas = $coisas;
    }
    public function index()
    {
        $coisas = $this->coisas->all();

        return view('form')->with('coisas',$coisas);
    }
}

assim nao


<?php

namespace App\Http\Controllers;

use App\http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Coisas;
use App\Banheiros;
use App\Camas;
use App\Pessoas;
use App\Pessoasdorm;
use App\Pref;
use App\Tipoimovel;

class formulario extends Controller
{
    private $banheiros;
    private $camas;
    private $pessoas;
    private $pessoasdorm;
    private $pref;
    private $tipoimovel;
    private $coisas;

    public function __construct(coisas $coisas)
    {
        $this->coisas = $coisas;
    }
            public function __construct(banheiros $banheiros,)
    {
        $this->banheiros = $banheiros;
    }

        public function __construct(camas $camas)
    {
        $this->camas = $camas;
    }

        public function __construct(pessoas $pessoas)
    {
        $this->pessoas = $pessoas;
    }

        public function __construct(pessoasdorm $pessoasdorm)
    {
        $this->pessoasdorm = $pessoasdorm;
    }

    public function __construct(pref $pref)
    {
        $this->pref = $pref;
    }

    public function __construct(tipoimovel $tipoimovel)
    {
        $this->tipoimovel = $tipoimovel;
    }

    public function index()
    {
        $coisas = $this->coisas->all();

        return view('form')->with('coisas',$coisas);
        return view('form')->with('banheiros',$banheiros);
        return view('form')->with('camas',$camas);
        return view('form')->with('pessoas',$pessoas);
        return view('form')->with('pessoasdorm',$pessoasdorm);
        return view('form')->with('pref',$pref);

    }
}
mgsistemas commented 7 years ago

Vc deve passar todas via parâmetro para view, por isso uso “compact”.

Veja um exemplo

Return view(‘form’, compact(‘pessoas’,’coisas’,’etc’);

Atenciosamente

Marcelo Gomes

MG Consultoria e Serviços em TI

Tel.: +55 (11) 2214-3585 / Móvel: +55 (11) 9 8364-3775

http://www.mgconsultoriainformatica.com.br

TrabalhoEmDia.com

A evolução na forma de trabalhar

https://www,trabakhoemdia.com

De: ynosbear [mailto:notifications@github.com] Enviada em: quarta-feira, 27 de setembro de 2017 12:12 Para: laravelbrasil/forum Cc: MG Consultoria Informática; Comment Assunto: Re: [laravelbrasil/forum] banco de dados (#141)

acertei o codigo mas agora estou com outra duvida como faço para importar varios dbs para minha view por exemplo assim funciona

class formulario extends Controller

{

    private $coisas;

    public function __construct(coisas $coisas)

    {

           $this->coisas = $coisas;

    }

public function index()

{

    $coisas = $this->coisas->all();

    return view('form')->with('coisas',$coisas);

}

}

assim nao

<?php

namespace App\Http\Controllers;

use App\http\Controllers\Controller;

use Illuminate\Http\Request;

use App\Coisas;

use App\Banheiros;

use App\Camas;

use App\Pessoas;

use App\Pessoasdorm;

use App\Pref;

use App\Tipoimovel;

class formulario extends Controller

{

    private $banheiros;

    private $camas;

    private $pessoas;

    private $pessoasdorm;

    private $pref;

    private $tipoimovel;

    private $coisas;

    public function __construct(coisas $coisas)

    {

           $this->coisas = $coisas;

    }

                   public function __construct(banheiros $banheiros,)

    {

           $this->banheiros = $banheiros;

    }

           public function __construct(camas $camas)

    {

           $this->camas = $camas;

    }

           public function __construct(pessoas $pessoas)

    {

           $this->pessoas = $pessoas;

    }

           public function __construct(pessoasdorm $pessoasdorm)

    {

           $this->pessoasdorm = $pessoasdorm;

    }

    public function __construct(pref $pref)

    {

           $this->pref = $pref;

    }

    public function __construct(tipoimovel $tipoimovel)

    {

           $this->tipoimovel = $tipoimovel;

    }

public function index()

{

    $coisas = $this->coisas->all();

    return view('form')->with('coisas',$coisas);

    return view('form')->with('banheiros',$banheiros);

    return view('form')->with('camas',$camas);

    return view('form')->with('pessoas',$pessoas);

    return view('form')->with('pessoasdorm',$pessoasdorm);

    return view('form')->with('pref',$pref);

}

}

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/laravelbrasil/forum/issues/141#issuecomment-332554567, or mute the thread https://github.com/notifications/unsubscribe-auth/AIZeFMcIZLYzSkKFIfzKfa4rHyVzRaTBks5smmXJgaJpZM4PkmFa .[image: Descrição: Imagem removida pelo remetente.]

ghost commented 7 years ago

estou com um provavel ultimo problema image

<?php

namespace App\Http\Controllers;

use App\http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Coisas;
use App\Banheiros;
use App\Camas;
use App\Pessoas;
use App\Pessoasdorm;
use App\Pref;
use App\Tipoimovel;

class formulario extends Controller
{
    private $banheiros;
    private $camas;
    private $pessoas;
    private $pessoasdorm;
    private $pref;
    private $tipoimovel;
    private $coisas;

    public function __construct(coisas $coisas)
    {
        $this->coisas = $coisas;
    }
    public function __construct(banheiros $banheiros)
    {
        $this->banheiros = $banheiros;
    }

        public function __construct(camas $camas)
    {
        $this->camas = $camas;
    }

        public function __construct(pessoas $pessoas)
    {
        $this->pessoas = $pessoas;
    }

        public function __construct(pessoasdorm $pessoasdorm)
    {
        $this->pessoasdorm = $pessoasdorm;
    }

    public function __construct(pref $pref)
    {
        $this->pref = $pref;
    }

    public function __construct(tipoimovel $tipoimovel)
    {
        $this->tipoimovel = $tipoimovel;
    }

    public function index()
    {
        $coisas         = $this->coisas->all();
        $banheiros      = $this->banheiros->all();
        $camas          = $this->coisas->all();
        $pessoas        = $this->coisas->all();
        $pessoasdorm    = $this->coisas->all();
        $pref           = $this->coisas->all();
        $tipoimovel     = $this->coisas->all();

        return view('form', compact('coisas'));

    }
}
mgsistemas commented 7 years ago

Vc declarou 2 “__construct()”

Veja este link talvez te ajude no que precisar:

https://pt.stackoverflow.com/questions/50509/como-realizar-sobrecarga-de-m%C3%A9todos-com-php

Atenciosamente

Marcelo Gomes

MG Consultoria e Serviços em TI

Tel.: +55 (11) 2214-3585 / Móvel: +55 (11) 9 8364-3775

http://www.mgconsultoriainformatica.com.br

TrabalhoEmDia.com

A evolução na forma de trabalhar

https://www,trabakhoemdia.com

De: ynosbear [mailto:notifications@github.com] Enviada em: quarta-feira, 27 de setembro de 2017 13:48 Para: laravelbrasil/forum Cc: MG Consultoria Informática; Comment Assunto: Re: [laravelbrasil/forum] banco de dados (#141)

estou com um provavel ultimo problema [image: Descrição: Imagem removida pelo remetente. image] https://user-images.githubusercontent.com/32100615/30926109-7dfebb2e-a38a-11e7-85e6-5b2766a95246.png

<?php

namespace App\Http\Controllers;

use App\http\Controllers\Controller;

use Illuminate\Http\Request;

use App\Coisas;

use App\Banheiros;

use App\Camas;

use App\Pessoas;

use App\Pessoasdorm;

use App\Pref;

use App\Tipoimovel;

class formulario extends Controller

{

    private $banheiros;

    private $camas;

    private $pessoas;

    private $pessoasdorm;

    private $pref;

    private $tipoimovel;

    private $coisas;

    public function __construct(coisas $coisas)

    {

           $this->coisas = $coisas;

    }

    public function __construct(banheiros $banheiros)

    {

           $this->banheiros = $banheiros;

    }

           public function __construct(camas $camas)

    {

           $this->camas = $camas;

    }

           public function __construct(pessoas $pessoas)

    {

           $this->pessoas = $pessoas;

    }

           public function __construct(pessoasdorm $pessoasdorm)

    {

           $this->pessoasdorm = $pessoasdorm;

    }

    public function __construct(pref $pref)

    {

           $this->pref = $pref;

    }

    public function __construct(tipoimovel $tipoimovel)

    {

           $this->tipoimovel = $tipoimovel;

    }

public function index()

{

    $coisas                = $this->coisas->all();

    $banheiros             = $this->banheiros->all();

    $camas                 = $this->coisas->all();

    $pessoas               = $this->coisas->all();

    $pessoasdorm   = $this->coisas->all();

    $pref                  = $this->coisas->all();

    $tipoimovel            = $this->coisas->all();

    return view('form', compact('coisas'));

}

}

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/laravelbrasil/forum/issues/141#issuecomment-332584394, or mute the thread https://github.com/notifications/unsubscribe-auth/AIZeFK2cOnj7i-loA5gxAQCOXPAaPVOdks5smnxPgaJpZM4PkmFa .[image: Descrição: Imagem removida pelo remetente.]

ghost commented 7 years ago

na vdd eu declarei muitas constructs, pensei que fosse assim que pegava os dados , como posso fazer para o codigo ficar mais simples e dinamico minha cabeça ficou uma zona

mgsistemas commented 7 years ago

Vc pode fazer assim

public function index()

{

$coisas = Coisas::paginate();

$pessoas = Pessoas::paginate();

$items = Item::paginate();

return view(‘form’,compact(‘coisas’,’pessoas’,’items’));

}

Atenciosamente

Marcelo Gomes

MG Consultoria e Serviços em TI

Tel.: +55 (11) 2214-3585 / Móvel: +55 (11) 9 8364-3775

http://www.mgconsultoriainformatica.com.br

TrabalhoEmDia.com

A evolução na forma de trabalhar

https://www,trabakhoemdia.com

De: ynosbear [mailto:notifications@github.com] Enviada em: quarta-feira, 27 de setembro de 2017 15:06 Para: laravelbrasil/forum Cc: MG Consultoria Informática; Comment Assunto: Re: [laravelbrasil/forum] banco de dados (#141)

na vdd eu declarei muitas constructs, pensei que fosse assim que pegava os dados , como posso fazer para o codigo ficar mais simples e dinamico minha cabeça ficou uma zona

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/laravelbrasil/forum/issues/141#issuecomment-332607239, or mute the thread https://github.com/notifications/unsubscribe-auth/AIZeFH2-pUG1nUX39FYm-Nj3zG9I7Qdeks5smo6HgaJpZM4PkmFa .[image: Descrição: Imagem removida pelo remetente.]

ghost commented 7 years ago

acho q vc acabou de salvar minha vida, pode me dar só mais uma ajudinha , para eu conseguir enviar esses dados para o servidor armazenar eu teria q criar outro controler ou outra funçao nesse controle e o que ela deveria conter, minha intençao é fazer um formulario , n estou habituado com esse framework mas preciso trabalhar nele ....

JoseCage commented 7 years ago

acho q vc acabou de salvar minha vida, pode me dar só mais uma ajudinha , para eu conseguir enviar esses dados para o servidor armazenar eu teria q criar outro controler ou outra funçao nesse controle e o que ela deveria conter, minha intençao é fazer um formulario , n estou habituado com esse framework mas preciso trabalhar nele ....

@ynosbear pode esclaecer melhor a segunda dúvida?? Para saber como lhe ajudar..

ghost commented 7 years ago

bom oq rola é que eu preciso fazer um formulario que envie os dados para um banco de dados e depois ele poste automaticamente esses dados em uma pagina especifica , preciso de uma forma de pegar itens selecionados e exibi-los em uma lista vou demonstrar com alguns prints

tenho este formulario todo programado em laravel image

quero que quando o usuario clique no item abaixo image

as propriedades q estao quadriculadas em azul se tornem isso aqui


>  Qual sua preferência de pagamento?
> o 1 ano parcelado em 12 x R$ 30,00 no cartão de crédito (PagSeguro)
> o 1 ano à vista R$ 300,00 (PagSeguro)
> O pagamento só será realizado após a aprovação do seu anúncio. Aguarde o contato.
> CADASTRE SEU IMÓVEL (Não será utilizado na publicação) *
> Nome completo ____________________________
> CPF ____________________________
> Endereço ____________________________
> Telefones de contato ____________________________
> E-mail de contato ____________________________
> DADOS DO IMÓVEL
> Nome do Imóvel * _______________________________
> Tipo de imóvel (Chácara, sitio, Rancho) * _______________________________
> Qual cidade o imóvel está localizado * _______________________________
> O imóvel possui endereço específico, bairro ou condomínio _______________________________
> Dimensão da chácara m2 : _______________________________
> QUAL A PREFERÊNCIA PARA AS LOCAÇÕES?
>  Locação Familiar
>  Casamento
>  Locação para Festas/Eventos
>  Finais de Semana
>  Temporada
>  Viagens Escolares
> Preço diária: ________________________
> Quantos dormitórios o imóvel possui? ______________________________________
> Qual a capacidade de acomodações em camas? ______________________________
> Qual a capacidade máxima aceita para pernoite? ______________________________
> Qual o número de pessoas o imóvel comporta em caso de festas e eventos? ______
> Quantos banheiros o imóvel possui: _________________________________________
> Faça uma descrição completa do imóvel
> O que o imóvel possui? 
>  Piscina
>  Piscina infantil 
>  Playground 
>  Campo de futebol 
>  Quadra de tênis 
>  Casa na árvore 
>  Pesca 
>  Rio 
>  Cavalos
>  Mesa de pebolim 
>  Mesa de sinuca/snooker 
>  Mesa de ping-pong 
>  Salão de jogos 
>  Cachoeira 
>  Área verde 
>  Quiosque 
>  Aparelho de som 
>  Luz para festa 
>  Ar condicionado 
>  Ventilador 
>  Internet 
>  Televisão 
>  Antena parabólica 
>  Churrasqueira 
>  Espaço gourmet 
>  Espaço para festas 
>  Estacionamento interno 
>  Forno de pizza 
>  Fogão à gás 
>  Fogão de lenha 
>  Forno de Lenha 
>  Fogão industrial 
>  Forno de micro-ondas 
>  Freezer 
>  Geladeira 
>  Utensílios de cozinha
> 

e que ao finalizar esses dados seja guardados no banco de dado e exibidos na pagina de anunciante, masss eu to com muita dificuldade pra armazenar os itens de checkbox, eu provavelmente so preciso dos ids que a pessoa selecione mas n sei como armazena-los no banco de uma forma dinamica pelo laravel, meio q sou estagiario e nunca tinha encostado em uma framework entendo um pouco de php entao n foi muito dificil mas cheguei nessa parte e to tomando um salve n consigo sair disso graças aos nossos amigos ali em cima deu certo um pedaço agr preciso fazer o resto

JoseCage commented 7 years ago

Não sei se vai de encontro ao que precisa, mas a principio podia separar as views (formulários) em partials, exemplo os campos que serão invocados quando clicar no checkbox ficam dentro do partial /resources/views/forms/imoveis_partial.blade.php e para o outro (parceiros) coloca em /resources/views/forms/parceiros_partial.blade.php.

Ai já facilita na hora de invocar um ou outro na tua condicional dentro da view.. Em particular nunca tive um caso do gênero então fica complicado ajudar na prática. Mas no meu entender tú podias (hipoteticamente) checar via javascript qual dos checkbox foi marcado e com base nisso chamar o partial correto. Não sei se dá para fazer simplesmente essa condicional com o blade.

Talvez o pessoal pode dar mais dicas.. Espero ter ajudado de alguma forma..

ghost commented 7 years ago

você deu uma grande ideia mas estou preocupado com como é que eu vou deixar certas coisas obrigatórias exemplo no formulário de parceiros mta coisa ja é obrigatória então eu preciso que quando a pessoa clique no de imóveis o q era obrigatório ja nao fique mais

mclgms commented 7 years ago

Validações você pode seguir por 2 caminhos. 1) Fazer no controller (não recomendado) 2) Utilizar RequestValidations (recomendado e mais simples) - veja : https://laravel.com/docs/5.5/validation#form-request-validation

JoseCage commented 7 years ago

então eu preciso que quando a pessoa clique no de imóveis o q era obrigatório ja nao fique mais

Não entendi bem essa parte.. De alguma forma não mudam os campos dependendo do que a pessoa escolhe??

mclgms commented 7 years ago

Bom, muitas das suas dúvidas estão relacionadas ao básico de html e javascript e não laravel/php. Talvez seja primordial vc dar uma olhada em tutoriais de html e javascript. O Laravel vai ajudar a abstrair muita coisa com relação a banco de dados, organização e etc, mas lado cliente, como é o caso, vc precisa se aprofundar um pouco mais.