mysql - 正确使用 between

标签 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-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);

因此效果很好,只将字段作为标识符“nrEmpenho”传递,但我想进行范围选择,采用“nrEmpenho”和“nrEmpenhooo”之间的值,就像我在两者之间做的那样?会是这样的吗?/

if ($request->nrEmpenho and $request->nrEmpenhooo) $query->where('emp.id', $request->between, $request->nrEmpenho and $request->nrEmpenhooo);

PS:当我创建 2 个文本字段时,即使通过不同的标识符,也只有一个过滤器。有谁能够帮助我?关于代码的任何问题我都把它变得更加清晰。 PSs:我的英语很差,我正在使用翻译器,请原谅,我需要这样的帮助。

最佳答案

使用 whereBetween() 函数:

$query->whereBetween('emp.id', [$request->nrEmpenho, $request->nrEmpenhooo]);

但如果 between 会出现性能问题,请尝试使用此示例:

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

或者可能是一组 ID?

所以:

$query->whereIn('emp.id', [$request->nrEmpenho, $request->nrEmpenhooo]);

关于mysql - 正确使用 between,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36573047/

相关文章:

php - 无法从 laravel 中的相关表中获取详细信息(使用 with)

mysql - 更新 MySQL 中的大量数据

api - 如何在 Laravel 5.3 中使用 API 路由

javascript - laravel 5.5 提交表单时的甜蜜提醒

php - Laravel Facebook 登录 - 无回调(本地主机)

mysql - JOIN 中特定列的 ORDER/LIMIT

javascript - 我想将可更改的数据存储在表行的一列中

php - mysql中如何清除某一列的数据而不删除它

mysql - 更改了mysql密码,现在它没有启动

javascript - Laravel 表单与 jquery 仅显示纯文本