Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Tabelas x Função x View

Olá, estou com um problema, e não estou conseguindo resolver: Possuo um formulário de cadastro de produto, onde possuo uma tabela de banco chamada produto com relacionamento em categoria, modelo, tipo e material. onde a categoria possui diversos registros assim como as demais. Na hora de chamar isto tando para listar (relatorio) tanto para cadastrar não sei como fazer para inserir as variaveis na view, consegui inserir a tabela produto e a tabela categoria, porem não consigo inserir as tabelas modelo, tipo e material. Ou seja como faço para fazer isto no controller para mostrar em minha view?

4 respostas

OI Celso, mostra pra gente como você está fazendo atualmente pra gente ter uma ideia melhor do que está acontecendo por favor?

Banco de Dados: Tabela: Produtos Colunas: id | categoria | modelo | opcional | desenho | material Tabela: categoria Colunas: id | tipo | nome | descricao Tabela: modelo Colunas: id | nome | descricao Tabela: modelo Colunas: id | categoria | nome | descricao Tabela: opcional Colunas: id | nome | produto e assim por diante...

Model Produto

class Produto extends Model
{
    protected $table = 'produtos';
    public $timestamps = false;

    protected $fillable = array('id','categoria');
    protected $guarded = ['id'];

    public function categoria(){
        return $this->belongsTo('App\Categoria');
    }

    public function modelo(){
        return $this->belongsTo('App\Modelo');
    }

}

Model Categoria

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Categoria extends Model
{
    protected $table = 'categoria';
    public $timestamps = false;

    public function produto(){
        return $this->hasMany('App\Produto');
    }
}

Model Modelo

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Modelo extends Model
{
    protected $table = 'modelo';
    public $timestamps = false;

    public function produtos(){
        return $this->hasMany('App\Produto');
    }

}

Controller Produto -> Função para formulario

<?php namespace App\Http\Controllers;

use Illuminate\Support\Facades\DB;
use App\Produto;
use App\Categoria;
use App\Modelo;
use Request;
use App\Http\Requests\ProdutosRequest;

class ProdutoController extends Controller 
{
public function novo(){

        return view('formulario')
            ->with('categorias', Categoria::all());
            ->with('modelos', Modelo::all());
    }
}

View Formulario

<form action="/produtos/adiciona" method="post">

  <input type="hidden" 
    name="_token" value="{{{ csrf_token() }}}" />


  <div class="form-group">
    <label>Categoria</label>
    <select name="categoria_id" class="form-control">
        @foreach($categorias as $c)
        <option value="{{$c->id}}">{{$c->nome}}</option>
        @endforeach
    </select>
  </div>

  <div class="form-group">
    <label>Modelo</label>
    <select name="modelo_id" class="form-control">
        @foreach($modelos as $m)
        <option value="{{$m->id}}">{{$m->nome}}</option>
        @endforeach
    </select>
  </div>


  <div class="form-group">
    <label>Complemento</label>
    <input name="nome" class="form-control"/>
  </div>

  <button type="submit" 
    class="btn btn-primary btn-block">Adicionar</button>
</form>
solução!

Apenas para informar, resolvi o problema..

Vou informar a solução caso mais alguém necessite:

 <div class="form-group">
    <label>Categoria</label>
    <select name="categoria_id" class="form-control">
        @foreach($categorias as $c)
        <option value="{{$m->nome-da-coluna_id->nome}"</option>
        @endforeach
    </select>
  </div>

o restante do código esta correto!

Opa Celso, que bom que resolveu, desculpa a demora! Sinto muito mesmo! Mas é isso ai mesmo.

Bons estudos, abraço!