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

Dúvida - Pegar Valores de Tabelas Relacionadas

Minha dúvida é a seguinte, eu tenho uma tabela de produtos que está relacionada com uma tabela de promoções, eu fiz o relacionamento entre elas.

Produtos

public function promocao()
  {
    return $this->hasMany('App\Promocoes','produto_id');
}

Promoções

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

Usando esse relacionamento eu consigo usar um Id de produto ou promoção para pegar uma lista relacionda.

Exemplo:

$produto = Produtos::find(1);
$produtos = $produto->promocao;

Usando isso eu pego todas as promoções que estão com esse produto, até ae blz, mas eu não consigo pegar todos os produtos que tem uma promoção.

O que eu quero, quero fazer uma busca por todos os produtos que estão relacionado a alguma promoção e passa para view como paginate.

Caso não tenha entendido, eu quero TODOS os Produtos que tem alguma promoção, quero pegar todos e passar por paginate para a view.

Desde de já muito obrigado!

2 respostas
solução!

Oi José, tudo bom?

Acredito que o que você está tentando é verificar dados de uma tabela em outra. Pra isso você pode tentar um join:

DB::table('promocao')
        ->join('produtos', function ($join) {
            $join->on('produto.id', '=', 'promocao.produto_id')
                 ->where('promocao.produto_id', '>', 0);
        })
        ->select('produtos.*')
        ->get();

Assim a gente seleciona todos os produtos que tem um id na tabela de promocao =)

Aqui na documentação, vc encontra mais alguns exemplos de join também:

https://laravel.com/docs/5.4/queries#joins

Mas, para esse tipo de query mais complexa, a gente pode sempre usar o método raw e escrever a query do jeito que a gente sabe, caso haja dificudade com a sintaxe do framework. Algo como:

$produtos = DB::table('produto')
                     ->select(DB::raw('//sua query'))
                     ->get();

Espero ter ajudado!

Abraço e bons estudos!

Opa André Chaves, era isso mesmo que eu queria, eu esqueci totalmente do join =D, passei 3 dias quebrando a cabeça com isso, você iluminou o meu caminho =]

Muito obrigado!