Mysql 正确使用

Mysql 正确使用,mysql,laravel,Mysql,Laravel,有人能帮我吗?我有以下表格: <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-x

有人能帮我吗?我有以下表格:

<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>     
然后执行if以捕获数据库中的数据:

$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 ($request->nrEmpenho) $query->where('emp.id', $request->nrEmpenho);
因此可以完美地工作,只将传递的字段作为标识符“nrEmpenho”,但我想进行范围选择,将“nrEmpenho”和“nrempenhoo”之间的值作为中间值?会是这样吗/

if ($request->nrEmpenho and $request->nrEmpenhooo) $query->where('emp.id', $request->between, $request->nrEmpenho and $request->nrEmpenhooo);
PS:当我创建两个文本字段时,只有一个过滤器,即使通过不同的标识符。有人能帮我吗?任何关于代码的问题,我都会尽一切努力让它变得更清晰。 PSs:我的英语很差,我正在使用translater,请原谅,我需要很多帮助。

使用whereBetween()函数:

$query->whereBetween('emp.id', [$request->nrEmpenho, $request->nrEmpenhooo]);
但是,如果在之间的存在性能问题,请尝试使用以下示例:

$query
->where('emp.id', '>=', $request->nrEmpenho)
->where('emp.id', '<=', $request->nrEmpenhooo);

我爱你,兄弟,非常感谢……一切顺利,我想表扬你,但我是新手我也爱你:P:D检查我关于性能不足的最新答案;)恕我直言,我不同意你的绩效评价<在索引字段上使用的code>BETWEEN,性能非常好。这是因为它可以进行索引范围扫描。@OllieJones你说得对(:但我记得我有一个问题,即带有索引日期字段的10多亿条记录的表。在切换到GTE之后,速度变快了。可能是在新版本的MySQL中更改的。
$query->whereIn('emp.id', [$request->nrEmpenho, $request->nrEmpenhooo]);