I';我在Laravel中执行此查询时出错

I';我在Laravel中执行此查询时出错,laravel,count,Laravel,Count,我在blade上执行此$query时遇到问题。我有4个计数,但只有$projetores和$infra_hdmi显示结果。在这种情况下,$infra_hdmi,另一个有值,但看起来不在页面加载时执行 奇怪的是,如果我更改$query的顺序,例如将$infra_vga放在$infra_hdmi上方,则计数工作正常 $unidade = Input::get('unidade_id'); $bloco = Input::get('bloco_id'); $query = Projetor::whe

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

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

$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}

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

在为计数添加
where
子句之前,您可以通过
$query
解决此问题:

$unidade=Input::get('unidade_id');
$bloco=Input::get('bloco_id');
$query=Projetor::where('unidade_id',$unidade)
->当(Input::has('bloco_id'),函数($query)使用($bloco){
$query->where('bloco\u id',$bloco);
});
$projetores=$query->get();
$infra_hdmi=(克隆$query)->where('infra','hdmi')->count();
$infra_vga=(克隆$query)->其中('infra','vga')->count();
$suporte_universal=(克隆$query)->其中('modelo_suporte',“universal”)->count();
$suporte_outros=(克隆$query)->其中('modelo_suporte',“Outro”)->count();

我在上面的代码中也使用了。这可以用来代替查询生成器中的if语句

尝试一件事不要使用$query做整个事情,我的意思是完整的查询您使用的是什么版本的Laravel?但我需要让一个选项仅通过unidade_id进行筛选。没有此查询筛选器,还有另一种方法可以做到这一点?拉威尔5。8@Gelbcke很高兴我能帮忙。