Laravel 8: Как проверить, если таблица пуста или нет

#php #laravel #laravel-8

#php #ларавель #laravel-8

Вопрос:

Я работаю с Laravel 8 над разработкой своего проекта, и в этом проекте у меня есть контроллер с именем HomeController , который использует этот метод:

 public function index()
    {
        $questions = Question::latest()->limit(5)->get();
        return view('home', compact('questions'));
    }
 

А потом я получаю такие результаты на blade:

 @php
    if ($questions)
    {
@endphp
<table class="table table-striped table-bordered table-responsive BKoodakBold">
    <thead class="thead-light">
        <tr>
        <th scope="col" class="forum-col" style="text-align:right;">Question</th>
        <th scope="col" style="text-align:right;">Answer</th>
        <th scope="col" style="text-align:right;">Rate</th>
        <th scope="col" style="text-align:right;">Views</th>
        </tr>
    </thead>
    <tbody>
@foreach($questions as $question)
    <tr>
        <td style="text-align:right;">
            <h3 class="h5 mb-0"><a href="#0" class="text-uppercase">{{ $question->title }}</a></h3>
        </td>
    </tr>
@endforeach
    </tbody>
</table>
@php
    }
@endphp
 

Как вы можете видеть, я установил if ($questions) , чтобы проверить, не является ли эта переменная пустой, выполните для каждого следующего цикла. И если он пустой, в нем не должны отображаться thead теги таблицы.

Но теперь проблема в том, что это не получается… Я имею в виду, что даже если у меня нет данных в базе данных, она все равно показывает таблицу thead полностью.

Так что же не так с этим кодом? Как я могу правильно проверить, пуста таблица или нет?

Я очень признателен, если вы поделитесь своей идеей по этому поводу… Спасибо.

Комментарии:

1. у вас есть коллекция, которая представляет собой объект, который всегда соответствует действительности true в PHP

2. @lagbox Итак, что я должен сделать сейчас вместо этого?

3. @if (isset($questions) amp;amp; !пусто($questions) amp;amp; count($questions) > 0)@endif

Ответ №1:

Вы возвращаете коллекцию, это всегда верно compact('questions')

Используйте

 if (!$questions->isEmpty())  # Laravel(in-built) way
 

 if (!$questions->isEmpty())
  // show data
else
  echo "No record found.";
 

Комментарии:

1. вы не можете использовать empty для этого

2. @lagbox Благодарит и isEmpty будет работать с коллекциями.

3. @lagbox хорошо. Отмечено

Ответ №2:

проверьте с этим условием

     @if (isset($questions) amp;amp; count($questions) > 0)

       Inside Code

    @endif
 

Комментарии:

1. вы не можете использовать empty для этого

2. @lagbox Хорошо понял. Спасибо

Ответ №3:

Проверьте дополнительное условие как

 amp;amp; count($questions) > 0
 

Ответ №4:

Вы всегда извлекаете коллекцию elocuent, даже если данные не получены. Но коллекция счетна, так что вы можете проверить ее с помощью

 if(count($collection))
 

если счетчик возвращает ноль, то предложение принимается как false