Это потому, что вы используете where
вместо whereIn
.
Если вы попытаетесь передать массив или коллекцию в where
, она будет использовать только первое значение.
$blogImage = BlogImage::whereIn('blog_id', $blogs->pluck('id'))->get();
Так как при этом будут возвращены все связанные с BlogImage
с Blog
в разбивке на страницы, я думаю, вам нужно будет проверить, чтобы убедиться, что вы отображаете только изображения, связанные с конкретным Blog
.Один из способов сделать это - использовать ` @ continue () :
@foreach($blogImage as $img)
@continue($blogImage->blog_id !== $blog->id)
<img src="{{asset('storage/blog_img/'.$img->blog_img)}}" alt="Image" class="img-responsive">
@endforeach
При всем сказанном, я бы порекомендовал использовать one-to-много отношений между Blog
и BlogImage
:
Блог
public function images()
{
return $this->hasMany(BlogImage::class);
}
BlogImage
public function blog()
{
return $this->belongTo(Blog::class);
}
Тогда в вашем контроллере вы можете Быстро загрузить изображений и иметь что-то вроде:
$blogs = Blog::with('images')->where('user_id', $user_id)->paginate(10);
И ваш блейд-файл будет иметь:
@foreach($blog->images as $image)
<img src="{{asset('storage/blog_img/'.$image->blog_img)}}" alt="Image" class="img-responsive">
@endforeach
Вы можетезатем примените ту же логику один-ко-многим и между User
и Blog
.