3 回答

TA贡献1835条经验 获得超7个赞
我认为这是多余的。$ Patient-> records是一个集合。我这样使用。
if($patient->records->count())
{
// has records
}

TA贡献2021条经验 获得超8个赞
如果可能无法定义empty($patient->records)
$ Patient或记录(假定为$ Patient的属性),则这很有用,因为$ Patient-> records-> count()本身会导致致命错误: Uncaught Error: Call to a member function count() on null in ...
随着empty($patient->records)
在if语句,可避免致命的错误,甚至在情况$患者或记录是不明确的。
空值表示检查$ Patient-> records是否已定义,而不是空值,而子句的count()部分是对count方法结果的更具体的检查。在$病人或记录未定义的情况下,该方法不可用。

TA贡献1864条经验 获得超6个赞
是的,这是多余的。
那么,为什么有人可以用这种方式编写代码?
可能是,在检查集合的长度之前,他想确保它不是,null
尽管在这种情况下我不喜欢使用is_null()
orisset()
方法。即使他脑子里有(一点都不安全)的想法,还是没有必要的。因为如果之间的关系patient
和records
正确定义(一对多=> hasMany()
),那么$patient->records
总是会返回一个集合但不能为null。即使它是一个空集合,您仍然可以count()
安全地使用方法,而无需检查as是否records
为null,因为如果我们返回一个hasMany()
关系,它永远不会为null 。
有什么更好的解决方案
您可以使用相同的条件删除空的检查部分,如下所示:
if($patient->records->count() > 0)
为了使它更具可读性,Laravel集合为我们提供了一个非常好的方法,称为isNotEmpty()
:
if($patient->records->isNotEmpty())
这是我更喜欢使用的。因为我们编写代码是为了使其他程序员(而非计算机)可以读取。计算机甚至可以理解二进制,但我们不会编写二进制。
- 3 回答
- 0 关注
- 148 浏览
添加回答
举报