#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
в PHP2. @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