php – Laravel 5 Cache / Paginate问题
发布时间:2020-12-14 19:44:59 所属栏目:大数据 来源:网络整理
导读:所以我决定从Laravel 4到5,这花了我大约1-2天,因为我几乎不知道如何进行过渡.在为我的应用程序进行升级时,我遇到了Json Pagination的一个小问题. 这段代码允许PageQuery通过KnockoutJS进行Paginated /** * Builds paginate query with given parameters. * *
所以我决定从Laravel 4到5,这花了我大约1-2天,因为我几乎不知道如何进行过渡.在为我的应用程序进行升级时,我遇到了Json Pagination的一个小问题.
这段代码允许PageQuery通过KnockoutJS进行Paginated /** * Builds paginate query with given parameters. * * @param array $params * @param integer $page * @param integer $perPage * * @return array */ public function buildPaginateQuery(array $params,$page = 1,$perPage = 15) { $query = $this->model; $query = $this->appendParams($params,$query); $count = (new Cache)->remember('count','2000',function() use ($query){ return $query->count(); }); $totalPages = $count / $perPage; $query = $query->skip($perPage * ($page - 1))->take($perPage); $query = $query->order(isset($params['order']) && $params['order'] ? $params['order'] : null); //$query = $query->cacheTags(array($this->model->table,'pagination'))->remember(2000); $query = (new Cache)->remember(array($this->model->table,'pagination'),function() use ($query){ return $query; }); return array('query' => $query,'totalPages' => $totalPages,'totalItems' => $count); } 最终导致此屏幕截图中出现此错误 错误指向上面的代码和此代码 /** * Get the full path for the given cache key. * * @param string $key * @return string */ protected function path($key) { $parts = array_slice(str_split($hash = md5($key),2),2); $path = $this->directory() . '/'.join('/',$parts).'/'.$hash; //unset the tags so we use the base cache folder if no //tags are passed with subsequent call to the same instance //of this class //$this->tags = array(); return $path; } 我使用名为TaggedFile的自定义缓存驱动程序.这在L4中运行良好但遇到错误,因为在缓存别名中删除了一些文件.像StoreInterface一样.我可以收到一些帮助吗?如果你需要我发布我会发布的任何内容. 更多东西: 在我使用它来注册global.php中的taggedFile驱动程序之前: Cache::extend('taggedFile',function($app) { return new IlluminateCacheRepository(new LibExtensionsTaggedFileCache); }); 我不知道究竟要把它放在哪里.有谁知道相当于那个?我尝试将它放在AppServiceProvider中但是出现了一个错误: Call to undefined method IlluminateSupportFacadesCache::extend() 这曾经在L4工作,所以我决定进入供应商文件夹手动找到问题所在…. 这只有:getFacadeAccessor(L4也只有扩展功能)
正如您所注意到的那样,您将数组作为$key值传递,最安全的方法是替换代码
$parts = array_slice(str_split($hash = md5($key),2); 同 $parts = array_slice(str_split($hash = md5(json_encode($key)),2); 注意:我不确定你运行的是什么版本的php,但是json_encode(…)通常比序列化更快(…) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |