当我在刀片上执行这个$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}}.
发布于 2019-06-05 13:37:52
出现此问题的原因是要将where子句添加到同一个$query对象中。
要解决这个问题,您可以做的是在为计数添加无性系子句之前先添加where,然后添加where:
$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语句。
https://stackoverflow.com/questions/56461321
复制相似问题