query between 2 tables laravel

0

I have the product tables (tbl_products) and the categories table (tbl_categories):

- tbl_produtos -
id_produto
nome
id_categoria

- tbl_categorias -
id_categoria
nome

What I want is: to display in the view the list of products, where for each product, it says the name of the category that is related. What is the best option to do this query? In the model or is there a problem with the controller?

In my controller I have the following:

public function getIndex(){
    $produtos= ProdutoDados::get(); 
    return View::make('produtos.lista', compact('produtos')); 
}

In the product model I have only the following:

<?php
    class ProdutosDados extends Eloquent{
        protected $table = 'tbl_produtos';
        protected $primaryKey = 'id_produto';
        protected $guarded = array('id_produto'); 
    }
?>

Model Categories:

<?php
    class CategoriaDados extends Eloquent{
        protected $table = 'tbl_categorias';
        protected $primaryKey = 'id_categoria';
        protected $guarded = array('id_categoria'); 
    }
?>
    
asked by anonymous 08.06.2015 / 11:18

1 answer

2

There are several ways to do ...

But there are two that I always use. Using JOIN in Laravel or using relationship functions in the corresponding Model.

Using JOIN:

$query = DB::table('tbl_produtos')
             ->join('tbl_categorias', 'tbl_produtos.id_categoria', '=', 'tbl_categoria.id')
             ->select('tbl_produtos.nome as Produto', 'tbl_categorias.nome as Categoria')
             ->get();

Using Relationship in the Model - The link below can help you.

link

    
08.06.2015 / 16:05