嗯,有人可以帮我吗?我有以下表格:
<div class="form-group col-md-12 col-sm-12 col-xs-12">
<div class="col-md-2 col-sm-2 col-xs-2 form-label">
{{Form::label('nrEmpenho', 'Nº Empenho')}}
</div>
<div class="col-md-6 col-sm-10 col-xs-10">
<div class="input-group">
<span class="input-group-addon" id="interval">Inicial</span>
{{Form::text('nrEmpenho', null, ['class' => 'form-control', 'min' => 1])}}
<span class="input-group-addon" id="interval">Final</span>
{{Form::text('nrEmpenhooo', null, ['class' => 'form-control', 'min' => 1])}}
</div>
</div>
所以我有这个查询在数据库中搜索数据:
$query = DB::table('empenho as emp')
->join('despesa', 'emp.fichaOrcId', '=', 'despesa.id')
->join('pessoa', 'emp.fornecedorId', '=', 'pessoa.id')
->join('fonte', 'emp.fonteId', '=', 'fonte.id')
->select('emp.nrEmpenho as a', 'emp.date as b', 'emp.tipo as c', 'pessoa.nome as d', 'emp.valor as e',
'emp.id as f', 'despesa.ficha as g', 'emp.ano as h', 'fonte.id as i')
->orderby('emp.nrEmpenho');
然后执行if以捕获数据库中的数据:
if ($request->nrEmpenho) $query->where('emp.id', $request->nrEmpenho);
因此效果很好,只将字段作为标识符&#34; nrEmpenho&#34;但我想做一个范围选择,取值&#34; nrEmpenho&#34;和&#34; nrEmpenhooo&#34;正如我那样做?会是这样的吗?/
if ($request->nrEmpenho and $request->nrEmpenhooo) $query->where('emp.id', $request->between, $request->nrEmpenho and $request->nrEmpenhooo);
PS:当我创建2个文本字段时,只有一个过滤器,即使是通过不同的标识符。有谁能够帮我?关于代码的任何问题我都把它变得更清晰。 PS:我的英语非常糟糕,我使用翻译,原谅我,我需要很多帮助。
答案 0 :(得分:2)
使用whereBetween()函数:
$query->whereBetween('emp.id', [$request->nrEmpenho, $request->nrEmpenhooo]);
但如果 会出现性能问题,请尝试使用此示例:
$query
->where('emp.id', '>=', $request->nrEmpenho)
->where('emp.id', '<=', $request->nrEmpenhooo);
或者可能是一组ID?
这样:
$query->whereIn('emp.id', [$request->nrEmpenho, $request->nrEmpenhooo]);