When posts create, I upload a photo using Laravel media library and I can simply retrieve data from media library using:
$blog->getFirstMediaUrl('blog');
I use Laravel cache feature for best performance and minimum query with redis
. I stored blog data in cache like below:
$blogs=Blog::where('publication_status', 1)
->select('id', 'admin_id', 'category_id', 'sub_category_id',
'blog_section_id', 'blog_title', 'slug',
'blog_short_description', 'blog_long_description', 'author_name',
'thumbnail', 'publication_status', 'created_at')
->orderBy('id', 'DESC')
->get();
Cache::forever('blogs', $blogs);
At that time I cached media library photo also like below:
$media=Media::all(); Cache::forever('media', $media);
After that I retrieved my blogs data in frontend like below:
$data['blogs']=cache()-get('blogs', function (){
Blog::where('publication_status', 1)
->select('id', 'admin_id', 'category_id', 'sub_category_id', 'blog_section_id', 'blog_title', 'slug',
'blog_short_description', 'blog_long_description', 'author_name',
'thumbnail', 'publication_status', 'created_at')
->orderBy('id', 'DESC')
->get();
});
return view('Frontend.includes.homepage.homepage', $data);
and pass $data in view file like below:
<div class="single_post_content_left">
<ul class="business_catgnav wow fadeInDown">
@foreach($blogs
->where('thumbnail', 1)
->where('blog_section_id', 1)
->take(1)
as $main_section)
<li>
<figure class="bsbig_fig"> <a href="{{ route('article', $main_section->slug) }}" class="featured_img"> <img alt="" src="{{
$main_section->getFirstMediaUrl('blog') }}"> <span
class="overlay"></span> </a>
<figcaption> <a href="{{ route('article', $main_section->slug) }}">{{ $main_section->blog_title }}</a>
</figcaption>
<p>{{ $main_section->blog_short_description }}</p>
</figure>
</li>
<small class="pull-right"><i class="fa fa-clock-o"></i> {{ $main_section->created_at->diffForHumans() }}</small>
@endforeach
</ul>
</div>
Here blogs are retrieve from cache successfully without media library data:
$main_section->getFirstMediaUrl('blog');
But I want to retrieve my media library data from cache like blogs for minimum query run, what can I do?