Как выводить посты в blade если в некоторых есть картинка, а в некоторых нет?

Задача такая: Есть посты и если у поста есть картинки, то нужно вывести первую, а если нет, то блок остаётся пустым. Вот что я делаю:
@if(!is_null($post->images))
         <img class="card-img-top" src="{{ asset('storage/images/posts') . '/' . $post->images()->first()->path ?? null}"style="width: 200px" alt="">
@endif

Получаю ошибку "Trying to get property of non-object". Я понимаю, что она появляется из-за того, что у некоторых постов нет картинки, а условие @if влияет только на то, виден html или нет. Но как тогда избавиться от ошибки?
  • Вопрос задан
  • 1045 просмотров
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега Laravel
условие @if влияет только на то, виден html или нет.
Вы неправы.

Картинки - это коллекция, она никогда не будет равна null, поэтому проверка ваша всегда проходит. Должно быть так:
@if($post->images->isNotEmpty())

$post->images()->first()->path
А вот здесь вы делаете лишний запрос в БД. Должно быть так: $post->images->first()->path
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы