现在,我可以使用循环功能,直到数据库中没有匹配项为止,这样我可以获得唯一的字符串。但是,由于某种原因,我的循环是无限的。我在这里做错什么了吗?
do {
$testvar = Str::random(5);
$data = User::where('password_url', 'LIKE', '%'.$testvar.'%')->get();
}
while (!empty($data));
问题是我没有收到任何错误消息,但也没有得到任何结果。重申一下,如果我的数组$ data为空,我希望此循环终止,但如果存在,我希望它继续直到空。
答案 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()));