- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这可能是一个微不足道的问题,但我想知道 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) { ... }
注释/引用
->first()
http://laravel.com/api/4.2/Illuminate/Database/Eloquent/Collection.html#method_first isEmpty()
http://laravel.com/api/4.2/Illuminate/Database/Eloquent/Collection.html#method_isEmpty ->count()
http://laravel.com/api/4.2/Illuminate/Database/Eloquent/Collection.html#method_count count($result)
之所以有效,是因为 Collection 实现了 Countable和内部count()
方法:http://laravel.com/api/4.2/Illuminate/Database/Eloquent/Collection.html#method_count 集合和查询生成器的差异可能会让 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/
所以我有这个表格..有 2 个字段。 “Youtube”和“link”我想做如果你已经填了YouTube,应该这样做: if(!empty($youtube)) { if ($pos === fal
我有一个要验证的输入: 这是 JS: jQuery("#input").live('change', function() { if("#input:not(
假设我在 someNode 中注册了一些带有 id 的小部件(比如 id1、id2)。现在,如果我这样做,domConstruct.empty(someNode),这将通过执行 someNode.in
我需要确定 IQueryable 方法是返回数据,还是像这样将其应用于 RadGrid 的数据源时返回“空”: RadGrid.DataSource = Method(x); if (
我有以下不能正常工作的 $_GET['category'] 也可以等于 0。 if ( empty( $_GET['category'] ) ){ // do something } else
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
这个问题在这里已经有了答案: In C#, should I use string.Empty or String.Empty or "" to intitialize a string? (31
使用下面的内容,我检查每个输入字段是否为空 if ( $("input:empty").length > 0 ) { $(":text[value=]").css('background'
这是有原因的吗?我问是因为如果您需要使用大量空字符,那么您会遇到与使用大量空字符串时相同的情况。 编辑:这种用法的原因是: myString.Replace ('c', '') 因此从 myStrin
我对 Apache POI 有一个大问题。 A B C D 1 text text text text 2
在阅读 MarkLogic 时 Query Performance and Tuning Guide ,我了解了 empty greatest 和 empty least 以及如何将其与 order
我正在使用.NET 3.5。我正在创建一个简单的类,并希望确保处理后的类不应该为 null 或者也不应该是新的.. 所以如果我们可以像这样测试它 Dim objClass as new Class()
我有这个 HTML 页面 foo pre:empty { display: none; } some text here in the pre element 而且我想知道为
我知道我能做到 unless [1].empty? 但是我想知道有没有办法呢? 最佳答案 以及 davidrac 提到的 #any?,以及 ActiveSupport有 #present?这更像是其他
在调试某些东西时,我看到了 STL vector::empty() 实现: bool empty() const {return (size() == 0); } 我相信,每当我们探测
我有一个 NavigationDrawer 来启动 fragment 。我有一个来自 TabPageIndicator 的包含 4 个选项卡的 fragment ,其中 fragment 包含 Lis
我正在使用 Jackson XML 2.8.9,不幸的是我找不到任何方法将空/空集合序列化为空节点。 负责序列化为 XML 的方法: protected byte[] toXml(final Coll
嗨,所有 SO 用户我对 null 和 Empty 的理解有点困惑。我知道 null 是特例,它不等于自身。我想知道如何确定它是空的,你告诉它是空的依据是什么,空也一样 它是基于内存分配还是什么? 如
这个问题在这里已经有了答案: What is the difference between String and string in C#? (66 个答案) 关闭 10 年前。 C# 中的 str
如果要创建一个空的T类型的IEnumerable,可以使用静态泛型方法创建 Enumerable.Empty() 参见 here了解更多信息。 为什么 Microsoft 选择此选项而不是对泛型类型使
我是一名优秀的程序员,十分优秀!