Laravel 中的缓存,属性没了,类没了如何处理?

如果出现 属性没有了。使用fillmodel

如果出现类没了,需要再次调用new 这个类,传参数。

如下面代码:


    /** 
    * topic  
    * 加载列表页数据自动判断类型与分页 
    * 此处方法为兼容版本 担心其他地方调用报错
    * @access public 
    * @param mixed $arg1 列表页数据类型 
    * @param int $arg2 页码 默认为空 
    * @date 2019-11-01
    * @author bobo<1576554465@qq.com>
    * @version     $1.1$ 
    * @since 1.0 
    * @return html 
    */ 
    public function topic($topicName,$page=1)
    {   
        $count = 10;
        $cache_simple = new BaseCacheSimple();
        $suffix_cache_name = '_'.$topicName;

        $cache_name = 'TOPIC_LIST';
        // 这里存入采取 hash 字段为page 
        $cache_simple->prepareCache( $cache_name, 2, $page, $suffix_cache_name )->getRedisWarp()->setDecodeArray(false);// true 得到数组
        $cacheData = $cache_simple->readCache();
        // dd($cacheData);
        if ($cacheData)
        {
            $datas = collect();
            // 循环填充data 下的model
            foreach ( $cacheData->data as $k=>$v )
            {
                $model = app(Article::class);
                BaseCacheTrait::fillModel($model,(array)$v);
                $datas[$k] = $model;

            }
            $cacheData->data = $datas; 
            // 因为外围 还有一个 分页类,所以继续new 分页类
            $articles = new AcademyPaginator($cacheData->data, $cacheData->total, $cacheData->per_page, $cacheData->current_page,[
                'path' => $cacheData->path,
                'pageName' => 'page',
            ]);
            // 这里是 专门追加的属性,作为前端模板判断
            $articles->clazz = 'page';
        }
        else
        {
            // 加上 $page 这里* 50 是 因为我们需要拿50页
            $articles = $this->paging($this->relations([$topicName], $count*50), $count, $page);
            if ( $articles && $articles->isNotEmpty() )
            {
                //写缓存
                $cache_simple->writeCache( $articles );
            }
        }

        // 加上page
        // $articles = $this->paging($this->relations([$topicName], $count*50), $count,$page);
        $urlPattern = $this->linkFactory->articleTopic($topicName);
        return $this->render("live-topic.article", $urlPattern, [
            "articles" => $articles,
            "topicName" => $topicName,
            "matchType" => $this->getMatchType($topicName),
            "tdk" => [
                "topic" => $this->findTdkTags($topicName),
            ],
        ],$articles);
    }
本作品采用《CC 协议》,转载必须注明作者和本文链接
嗨,我是波波。曾经创业,有收获也有损失。我积累了丰富教学与编程经验,期待和你互动和进步! 公众号:上海PHP自学中心 付费知识星球:破解面试:程序员的求职导师
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 2

变量一下驼峰一下蛇形,看着不难受?

4年前 评论
wangchunbo

@Nick 哈哈,人家的方法就这样了。

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
司机 @ 欣昊玉
文章
273
粉丝
339
喜欢
558
收藏
1106
排名:64
访问:12.2 万
私信
所有博文
社区赞助商