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

时间:2019-06-20 04:12:27

标签: php laravel

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

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

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

3 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:2)

您也可以使用以下代码:

do {
   $testvar = Str::random(5);
   $data = User::where('password_url', 'LIKE', '%'.$testvar.'%')->get();
}while (count($data)!=0);

为什么我建议这样做,是因为有时 $ data-> count()返回错误的计数!

(这件事发生在我身上,所以当时我使用了 count()函数,它起作用了!

答案 2 :(得分:2)

您尝试过这个吗

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