Laravel, делай .. а цикл зацикливается бесконечно? - PullRequest
6 голосов
/ 20 июня 2019

Прямо сейчас у меня есть функция цикла, чтобы работать, пока в моей базе данных нет совпадений, чтобы я мог получить уникальную строку. Однако по какой-то причине мой цикл бесконечен. Я что-то здесь не так делаю?

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

Дело в том, что я не получаю никаких сообщений об ошибках, но я также не получаю никаких результатов. Еще раз повторюсь: если мой массив $ data пуст, я хочу, чтобы этот цикл был прерван, но если он существует, я хочу, чтобы он продолжался до тех пор, пока он не станет пустым.

Ответы [ 3 ]

5 голосов
/ 20 июня 2019

Попробуйте использовать $data->count(), чтобы проверить, было ли что-либо возвращено в наборе результатов:

do {
    $testvar = Str::random(5);
    $data = User::where('password_url', 'LIKE', '%'.$testvar.'%')->get();
}
while ($data->count());
2 голосов
/ 20 июня 2019

Вы пробовали это,

do{
    $testvar = Str::random(5);
     $data = User::where('password_url', 'LIKE', '%'.$testvar.'%')->get();
  }while (!empty($data->count()));
2 голосов
/ 20 июня 2019

Вы также можете использовать приведенный ниже код:

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

Почему я предлагаю это, потому что иногда $ data-> count () возвращает неправильный счет !!

(Это случилось со мной, поэтому в то время я использовал функцию count () , и она работала!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...