我有几个问题,第一个是: 检查变量是否包含数据库中的任何记录的最佳方法是什么。例如,当我想从集合中获得单行时:
$variable->sth->first()->url
我得到回复:
在null上调用第一个成员函数。
所以如果我会使用这样的东西:
@if($variable->sth->count() > 0)
code here
@endif
这是对的吗?以及它们之间的区别
@if($variable->sth->count() > 0)
和@if(count($variable->sth)>0 @endif
因为两者都有效,但并非总是
第二个问题是:为什么当我想从集合中获取一行并且当集合为空时会出现错误?但是当我使用foreach从db获取所有行时,当收集行是否为空时,不会出现任何内容。
第三个问题是:我应该何时检查,返回的数据是否为空?
我是新手,抱歉。
答案 0 :(得分:0)
检查变量是否包含数据库中的任何记录的最佳方法是什么。
您可以使用dd()之类的laravel方法或使用var_dump()来查看变量的内容。
我得到回复:在null上调用第一个成员函数。
这是因为sth
中的属性$variable
为空,因此它不包含名为first()
的函数或成员
为什么当我想从集合中获取一行时以及当集合为空时会出现错误?但是当我使用foreach从db获取所有行时,当收集行是否为空时,不会出现任何内容。
在做任何事情之前,Foreach会首先评估集合中是否有数据。您收到的错误是因为您访问的行可能不存在。在访问其数据之前,您需要首先评估集合是否为空
我应该何时检查,返回的数据是否为空?
在尝试使用之前