I have the function in my controller:
public function pesquisa(Request $request)
{
if (! Gate::allows('celular')) {
return abort(401);
}
$marcas = CelularMarca::orderBy('nome', 'asc')->pluck('nome','id')->all();
$modelos = CelularModelo::orderBy('nome', 'asc')->pluck('nome','id')->all();
$cores = Cor::orderBy('nome', 'asc')->pluck('nome','id')->all();
$cidades = Cidade::orderBy('nome', 'asc')->pluck('nome','id')->all();
$situacoes = CelularSituacao::orderBy('nome', 'asc')->pluck('nome','id')->all();
$buscar_marca = $request['marca_id'];
$buscar_modelo = $request['modelo_id'];
$buscar_cor = $request['cor_id'];
$buscar_cidade = $request['cidade_id'];
$buscar_data_inicial = $request['data_inicial'];
$buscar_data_final = $request['data_final'];
$buscar_bou = $request['bou'];
$buscar_imei1 = $request['imei1'];
$buscar_situacao = $request['situacao_id'];
// cria o array que será utilizado no query builder
$buscar_todos;
$buscar_datas;
// verifica se buscou marca
if($buscar_marca) {
$buscar_todos[] = ['marca_id', $buscar_marca];
}
// verifica se buscou modelo
if($buscar_modelo) {
$buscar_todos[] = ['modelo_id', 'like', '%'.$buscar_modelo.'%'];
}
// verifica se buscou cor
if($buscar_cor) {
$buscar_todos[] = ['cor_id', $buscar_cor];
}
// verifica se buscou cidade
if($buscar_cidade) {
$buscar_todos[] = ['cidade_id', $buscar_cidade];
}
// verifica se buscou data
if($buscar_data_inicial) {
$buscar_datas[] = ['data_inicial', $buscar_data_inicial];
}
// verifica se buscou data
if($buscar_data_final) {
$buscar_datas[] = ['data_inicial', $buscar_data_final];
}
// verifica se buscou BOU
if($buscar_bou) {
$buscar_todos[] = ['bou', $buscar_bou];
}
// verifica se buscou IMEI1
if($buscar_imei1) {
$buscar_todos[] = ['imei1', 'like', '%'.$buscar_imei1.'%'];
}
// verifica se buscou situação
if($buscar_situacao) {
$buscar_todos[] = ['situacao_id', $buscar_situacao];
}
// verifica se há valores para utilizar no 'where'
if(isset($buscar_todos)){
$celulares = Celular::where($buscar_todos)->get();
}
if(isset($buscar_datas)){
$celulares = Celular::whereBetween('data',[$buscar_data_inicial, $buscar_data_final])->get();
}
else{
$celulares = Celular::all();
}
return view('celulares.pesquisa', compact('celulares','marcas','modelos','cores','cidades','situacoes'));
}
But I'm not able to merge search fields along with dates, or search fields or dates only, I'd like to know how I can resolve this in the function.