首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我在Laravel中执行这个查询时出错了

我在Laravel中执行这个查询时出错了
EN

Stack Overflow用户
提问于 2019-06-05 13:18:56
回答 1查看 29关注 0票数 0

当我在刀片上执行这个$query时,我遇到了问题。我有4个计数,但只有$projetores$infra_hdmi显示结果。在这种情况下,$infra_hdmi,另一个有值,但是看起来不像在页面加载时执行。

奇怪的是,如果我更改$query的顺序,例如,将$infra_vga放在$infra_hdmi之上,计数工作正常。

代码语言:javascript
复制
$unidade = Input::get('unidade_id');
$bloco = Input::get('bloco_id');

$query = Projetor::where('unidade_id', $unidade);

$query->where(function($query) use ($bloco) {
    if (Input::has('bloco_id')) {
       $query->where('bloco_id', $bloco);
    }
});

$projetores = $query->get();

$infra_hdmi = $query->where('infra', 'HDMI')->count();
$infra_vga = $query->where('infra', 'VGA')->count();

$suporte_universal = $query->where('modelo_suporte', "Universal")->count();
$suporte_outros = $query->where('modelo_suporte', "Outro")->count();

在刀片上,我展示的是{{$infra_hdmi}{$infra_vga}}.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-05 13:37:52

出现此问题的原因是要将where子句添加到同一个$query对象中。

要解决这个问题,您可以做的是在为计数添加无性系子句之前先添加where,然后添加where

代码语言:javascript
复制
$unidade = Input::get('unidade_id');
$bloco = Input::get('bloco_id');

$query = Projetor::where('unidade_id', $unidade)
    ->when(Input::has('bloco_id'), function ($query) use ($bloco) {
        $query->where('bloco_id', $bloco);
    });

$projetores = $query->get();

$infra_hdmi = (clone $query)->where('infra', 'HDMI')->count();
$infra_vga = (clone $query)->where('infra', 'VGA')->count();
$suporte_universal = (clone $query)->where('modelo_suporte', "Universal")->count();
$suporte_outros = (clone $query)->where('modelo_suporte', "Outro")->count();

我还在上面的代码中使用了何时()。这可以用查询生成器代替if语句。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56461321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档