我有一个收藏。
$items = Item:where('count' , '>' , 5)->get();
我有一个id数组。
$ids = [2 , 4 , 7 , 8];
在我的Laravel Blade中,我想基于ids数组在$items上显示每个元素。我做了如下操作:
@foreach($ids as $id)
<a href="#">
{{ $items->where('id' ,$id)->first()->name }}
</a>
@endforeach
它运行得很好。问题是,我向数据库发送了多少个查询?下面的代码是在运行一个新的查询吗?
$items->where('id' ,$id)->first()->name
因为我已经get()
了数据库中的项目。另一个问题是,在显示视图/刀片时,我如何知道有多少查询被发送到数据库?
6条答案
按热度按时间jpfvwuh41#
要检查/调试在laravel中的页面上执行的所有查询:(下面的代码可以插入根文件)
hrirmatl2#
它只获取一个查询,并且在get之后应用的where()方法在这种情况下只是从原始项中筛选。
此外,您还可以安装一个logger db来检查querys正在做什么,例如Laravel Debugbar
b91juud33#
您可以随时检查网络选项卡,并选择XHR,将显示每一个请求。也可以使用
更平滑:P
希望对你有帮助:D
ep6jt1vc4#
您可以在方法中侦听DB查询:
参考文献
iovurdzv5#
您已经从数据库中获取了项目,因此不会运行任何查询。您正在使用Laravel集合的where()函数,该函数基于您提供的键、值对进行过滤。https://laravel.com/docs/5.8/collections#method-where
rekjcdws6#
您可以使用流行的Debug
https://github.com/barryvdh/laravel-debugbar
它非常简单和说明性!