zoukankan      html  css  js  c++  java
  • legend3---laravel分页缓存问题

    legend3---laravel分页缓存问题

    一、总结

    一句话总结:

    laravel缓存分页数据的时候,就算在model中,paginate分页从数据库中获取数据还是可以获取到分页数据的,我们需要关注的就是找到分页参数,然后按分页参数缓存好数据即可
    $request = request()->toArray();
    $page=1;
    if(isset($request['page'])) $page=$request['page'];
    $lessons=LessonChoose::cacheLessonList_byTagId($tag_id,$page);

    1、laravel在模型中查看请求的参数?

    a、获取请求对象:$request = request();
    b、获取请求参数的数组(比如分页):$request = request()->toArray();

    二、laravel分页缓存问题

    博客对应课程的视频位置:

    1、控制器中

    核心代码:

    1 $request = request()->toArray();
    2 $page=1;
    3 if(isset($request['page'])) $page=$request['page'];
    4 $lessons=LessonChoose::cacheLessonList_byTagId($tag_id,$page);

    完整代码:

     1     //课程选择页
     2     public function lessonChoose($tag_id=0){
     3         session(['nowControllerAction'=>AppModelControllerAndFunction::jointControllerAndFunction()]);
     4 
     5         //dd($tag);
     6         //1、获取标签数据
     7         $tags=LessonTag::cacheLessonTag();
     8 
     9         //2、获取课程的总课程数:
    10         $lessons_count=LessonChoose::cacheLessonCount();
    11 
    12 
    13         //根据tag来获取课程数据
    14         //有page,不能缓存
    15         $request = request()->toArray();
    16         $page=1;
    17         if(isset($request['page'])) $page=$request['page'];
    18         $lessons=LessonChoose::cacheLessonList_byTagId($tag_id,$page);
    19 
    20 
    21         //如果用户登录了
    22         if(Auth::guard('user')->user()){
    23             $u_id=Auth::guard('user')->user()->id;
    24             //步骤二:获取用户的课程点赞信息 和 用户收藏的课程的信息
    25 
    26             $likeAndCollectLesson=LikeAndCollectLesson::cache_likeAndCollectLesson_ids($u_id);
    27             $likeLessons_l_ids=$likeAndCollectLesson['likeLessons_l_ids'];
    28             $collectLessons_l_ids=$likeAndCollectLesson['collectLessons_l_ids'];
    29         }else{
    30             $likeLessons_l_ids=[];//用户喜欢的课程id集合
    31             $collectLessons_l_ids=[];//用户收藏的课程的id集合
    32         }
    33 
    34 
    35         //dd($lessons);
    36         return view('home.lesson.choose_lesson',compact(['tags','lessons','tag_id','likeLessons_l_ids','collectLessons_l_ids','lessons_count']));
    37     }
     

    2、对应的缓存

     1     //2、缓存课程列表(根据tag_id)
     2     //全部课程的话,tagId为0
     3     //page参数是解决分页问题
     4     public static function cacheLessonList_byTagId($tag_id,$page=1){
     5         $cacheStr='Lesson_lessonList_byTagId_'.$tag_id.'_'.$page;
     6         $lessons = Cache::get($cacheStr);
     7         if($lessons){
     8             return $lessons;
     9         }else{
    10             if($tag_id){
    11                 $lessons=Tag::find($tag_id)->lessons()->orderBy('l_like', 'desc')
    12                     ->orderBy('l_collect_num', 'desc')->orderBy('l_click', 'desc')
    13                     ->orderBy('l_comment_num', 'desc')->latest()->paginate(12);
    14 //            $lessons=Tag::find($tag_id)->lessons()->latest()->paginate(12);
    15             }else{
    16                 $lessons=Lesson::orderBy('l_like', 'desc')
    17                     ->orderBy('l_collect_num', 'desc')->orderBy('l_click', 'desc')
    18                     ->orderBy('l_comment_num', 'desc')->latest()->paginate(12);
    19 //            $lessons=Lesson::latest()->paginate(12);
    20             }
    21 
    22 
    23             Cache::put($cacheStr, $lessons, 1);
    24             return $lessons;
    25         }
    26     }
     
  • 相关阅读:
    magic_quotes_gpc(魔术引号开关)
    获取文件绝对路径:__FILE__与 $_SERVER[SCRIPT_FILENAME''] 的 区别
    小程序wx:key中的关键字*this
    swiper 更改indicator-dots 属性 隐藏面板指示点
    B站视频下载
    makefile教程
    Qt 中配置 c99的问题
    C语言编译过程及相关文件
    go语言入门(10)并发编程
    go语言入门(9)文本文件处理
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/12635028.html
Copyright © 2011-2022 走看看