Laravel雄辩:计数($result)vs$result->;计数()
我对此有点陌生,最初试图用Laravel雄辩:计数($result)vs$result->;计数(),laravel,count,eloquent,Laravel,Count,Eloquent,我对此有点陌生,最初试图用isEmpty()检查我的模型是否返回结果,但我想改为尝试count(),然后我遇到了以下问题: 我有以下代码,它从我的模型返回数据: $results=Game::where('code','=','code)->带有('genre','creator') 无论我是使用first()还是get()与count(result)还是$results->count()结合使用,我都会得到不同的值,我不知道为什么 使用->first()时 使用->get()时 使用->fir
isEmpty()
检查我的模型是否返回结果,但我想改为尝试count()
,然后我遇到了以下问题:
我有以下代码,它从我的模型返回数据:
$results=Game::where('code','=','code)->带有('genre','creator')
无论我是使用first()
还是get()
与count(result)
还是$results->count()
结合使用,我都会得到不同的值,我不知道为什么
使用->first()时
使用->get()时
使用->first()时
使用->get()时
我不明白1)为什么使用first时,计数与db中的每一行相同。2) 为什么count()
不能与first()
一起使用
有人能解释为什么我不能像我想的那样使用count on first吗
更新:
我也不能使用->isEmpty()
和->first()
一起使用,但可以使用->get()
当我尝试在first中使用它时,我发现illumb\Database\Query\Builder::isEmpty不存在。
免责声明:我不确定为什么您的数据库计数和结果计数不相同,但是我可以解释不同类型的计数
Game::where('code','=',$code)->count();
这是在查询生成器实例上调用的。它在数据库查询上运行,而不选择所有行。在此处查看标题聚合:
Game::where('code','=',$code)->get()->count();
只要使用get()
laravel选择行,将它们全部引导为模型,并创建一个集合。此计数在集合上(有点像数组),因此只需获取返回的数字(即,如果对其进行分页或类似操作,则只需获取该数量)。签出计数
Game::where('code','=',$code)->first()->count();
这将在第一个返回的模型上运行。。。除非您已经编写了它,否则默认的laravel模型将不会有count()
方法
计数($results)
最后,count() 免责声明:我不知道为什么数据库计数和结果计数不一样,但是我可以解释一下不同类型的计数
Game::where('code','=',$code)->count();
这是在查询生成器实例上调用的。它在数据库查询上运行,而不选择所有行。在此处查看标题聚合:
Game::where('code','=',$code)->get()->count();
只要使用get()
laravel选择行,将它们全部引导为模型,并创建一个集合。此计数在集合上(有点像数组),因此只需获取返回的数字(即,如果对其进行分页或类似操作,则只需获取该数量)。签出计数
Game::where('code','=',$code)->first()->count();
这将在第一个返回的模型上运行。。。除非您已经编写了它,否则默认的laravel模型将不会有count()
方法
计数($results)
最后,count() 首先
get()
返回对象集合,first()
返回查询的模态对象
$results=Game::where('code','=','code)->带有('genre','creator'))
dd($results->count())=11930//数据库中的行数
使用->get()时
$results=Game::where('code','=','code)->with('genre','creator')->get()
dd($results->count())=1
因为它有一个集合,其中包含大量的数据库数据对象。由于->count
只获取一个集合,因此它首先返回1
get()
返回对象集合,first()
返回查询的模态对象
$results=Game::where('code','=','code)->带有('genre','creator'))
dd($results->count())=11930//数据库中的行数
使用->get()时
$results=Game::where('code','=','code)->with('genre','creator')->get()
dd($results->count())=1
因为它有一个集合,其中包含大量的数据库数据对象。由于->count
只获取一个集合,因此它返回1
您正在执行此操作wrong@WahyuKristianto感谢您的有用见解!你在做wrong@WahyuKristianto感谢您的有用见解!
dd($results->count()) = 11930 // Number of rows in the db
dd($results->count()) = 1 // What I'd expect the query to return
dd(count($results)) = "count(): Parameter must be an array or an object that implements Countable"
dd(count($results)) = 1