gpt4 book ai didi

laravel - Eloquent 集 : Counting and Detect Empty

转载 作者:行者123 更新时间:2023-12-02 06:58:33 31 4
gpt4 key购买 nike

这可能是一个微不足道的问题,但我想知道 Laravel 是否推荐某种方法来检查 Eloquent 集合是否从 $result = Model::where(...)->get() 返回 为空,同时计算元素数量。

我们目前正在使用 !$result 来检测空结果,这是否足够?至于count($result),它真的涵盖了所有情况,包括空结果吗?

最佳答案

当使用->get()时您不能简单地使用以下任何一项:

if (empty($result)) { }
if (!$result) { }
if ($result) { }

因为如果你 dd($result);你会注意到 Illuminate\Support\Collection 的一个实例总是返回,即使没有结果。本质上您要检查的是 $a = new stdClass; if ($a) { ... }它总是返回 true。

要确定是否有任何结果,您可以执行以下任一操作:

if ($result->first()) { } 
if (!$result->isEmpty()) { }
if ($result->count()) { }
if (count($result)) { }

您还可以使用->first()而不是->get()在查询生成器上,它将返回第一个找到的模型的实例,或 null否则。如果您需要或只期望从数据库中获得一个结果,这非常有用。

$result = Model::where(...)->first();
if ($result) { ... }

注释/引用

奖金信息

集合和查询生成器的差异可能会让 Laravel 新手感到有点困惑,因为两者之间的方法名称通常相同。出于这个原因,你可能会不清楚自己在做什么。查询生成器本质上构建一个查询,直到您调用一个方法,它将执行查询并访问数据库(例如,当您调用某些方法,如 ->all() ->first() ->lists() 等)。这些方法存在于 Collection 上。对象,如果有多个结果,可以从查询生成器返回该对象。如果您不确定您实际上正在使用哪个类,请尝试执行 var_dump(User::all())并尝试查看它实际返回的类(在 get_class(...) 的帮助下)。我强烈建议您查看 Collection 类的源代码,它非常简单。然后检查查询生成器,查看函数名称的相似之处,并找出它何时实际访问数据库。

关于laravel - Eloquent 集 : Counting and Detect Empty,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20563166/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com