$result = usr::where("username", $username)->where("password", sha1($password))->get();
echo $result;
if(!empty($result)){
echo " -WORKED :D";
}else{ echo "FAILED D:"; }
结果总是'[] - 工作:D',数据库没有重新执行任何操作,数组显然是空的,为什么它认为数组内部存在某些内容?
编辑:
好的,所以我找到了一个相对较快的修复,我不确定为什么会这样,但empty()
没有。
我刚刚使用if(count($results) < 1){
并且工作正常,任何人都可以解释为什么它不能处理empty()
条件吗?
答案 0 :(得分:6)
因为它不是空的,所以你得到一个没有数据填充的集合 由于集合是自定义对象,因此PHP不知道它可以为空。
您需要Laravel框架中的isEmpty方法。
代码行将是:
if(!$result->isEmpty())
答案 1 :(得分:1)
get()
返回一个Laravel Collection(Illuminate\Database\Eloquent\Collection),而不是数组。您可以使用$result->isEmpty()
或$result->count() > 0
检查其是否为空。
您还可以使用$result->toArray()
将集合转换为普通的php数组。