Laravel,do..while循环无限循环吗?

Udh*_*air 5 php laravel

现在,我有一个循环功能可以使用,直到数据库中没有匹配项为止,这样我可以获得唯一的字符串。但是,由于某种原因,我的循环是无限的。我在这里做错什么了吗?

do {
   $testvar = Str::random(5);
   $data = User::where('password_url', 'LIKE', '%'.$testvar.'%')->get();
}
   while (!empty($data));
Run Code Online (Sandbox Code Playgroud)

问题是我没有收到任何错误消息,但也没有得到任何结果。重申一下,如果我的数组$ data为空,我希望此循环终止,但如果它存在,我希望它继续直到它为空。

Tim*_*sen 7

尝试使用$data->count()检查结果集中是否返回了任何内容:

do {
    $testvar = Str::random(5);
    $data = User::where('password_url', 'LIKE', '%'.$testvar.'%')->get();
}
while ($data->count());
Run Code Online (Sandbox Code Playgroud)

  • 如果没有返回结果,User::where('...')->get() 将返回一个空的 Laravel 集合,因此在这些条件下 `empty($data)` 返回 `false`。因此无限循环。 (2认同)