Uma coisa muito comum em um sistema é a filtragem de registros em uma consulta. Apesar de comum, acho muito exaustivo desenvolver uma filtragem usando SQL's e seus WHERE's e INNER JOIN's. Como isso seria feito usando os Modelos Eloquent? Na verdade li a documentação, mas não encontrei o que eu queria (ou não percebi).
Um exemplo simples:
Dois modelos relacionados (ou seja, duas tabelas no banco): Produtos e Categorias.
Uma view com formulário de 3 inputs: produto, preço e categoria.
Ao preencher os campos e submeter o formulário, os parâmetros serão usados para criar a query no Controller.
Mostrar o resultado filtrado numa view em uma tabela.
Pelo o que eu pesquisei na documentação do Laravel, poderia fazer algo do tipo:
$produtos = Produto::all()
->where('produto', Request::input('produto'))
->where('preco', Request::input('preco'));
return view('lista')->with('produtos ' , $produtos );
Até aqui tudo bem, posso filtrar os produtos por nome e preço, mas ai vêm os questionamentos:
1 - Como filtrar os produtos por CATEGORIA através do campo categoria do meu formulário?
2 - Se um dos campos estiver VAZIO (ou todos), como NÃO filtrar por esse campo (ou seja, retornar TODOS)?