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     }
     
  • 相关阅读:
    2016.07.13-map的使用(以leetcode1-Two Sum为例)
    2016.6.26——Maximum Depth of Binary Tree
    centos7下docker发布第一个微服务应用(Eureka)
    centos7下快速安装Nginx服务器
    java队列Queue及阻塞队列
    JConsole连接远程linux服务器配置
    mysql时间与字符串之间相互转换
    Tomcat启动报错:org.apache.catalina.LifecycleException: Failed to start component...java.util.zip.ZipException: error in opening zip file
    java post请求的表单提交和json提交简单小结
    wagon-maven-plugin实现自动打包部署到服务器
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/12635028.html
Copyright © 2011-2022 走看看