Есть несколько вещей, которые вам нужно подтвердить.
Вы создали модели для таблицы, например Post
для posts
таблицы и PostImages
для post_images
таблицы. Если нет, следуйте документации. https://laravel.com/docs/5.8/eloquent
Вы создали отношение hasMany
в своей модели post
с post_images
. Как:
В Post
модель.
/**
* Get the images for the post.
*/
public function images()
{
return $this->hasMany('App\PostImage');
}
- Затем измените в своем контроллере использование ранней загрузки, например:
$secondpost = \App\Post::with("images")
->orderBy('id', 'desc')
->skip(1)
->take(8)
->get();
А теперь вид выглядит так:
<div class="row">
@foreach ($secondpost as $secondp)
<div class="col-lg-3 col-md-3 col-sm-6 col-xs-6 post-ab">
<div class="row">
@php
$image = $secondp->images->first();
@endphp
<img src="{{url($image->filename)}}" class="imgpost" alt="">
<div class="bottomleft">
<p class="ab-desc">{{$secondp->marca}} {{$secondp->model}}</p>
<p class="ab-desc">{{$secondp->pret}} Eur</p>
</div>
</div>
</div>
@endforeach
</div>
Решение: 2
Вы можете создать другое отношение с помощью hasOne
, чтобы получить одно изображение, например:
// In your Post model.
/**
* Get the default image for post.
*/
public function default_image()
{
return $this->hasOne('App\PostImage')->orderBy("id");
}
Внесите изменения в контроллер для использования ->with("default_image")
.
И ввиду этого вы можете просто использовать как:
$secondp->default_image->filename