2015-05-01 36 views
7

Bu yüzden Laravel 4'ten 5'e gitmeye karar verdim, bu da beni yaklaşık 1-2 gün sürdü. Uygulamam için Yükseltme yaparken, Json Pagination ile küçük bir sorunla karşılaştım.Laravel 5 Cache/Paginate Sorun

Bu kod verir ne PageQuery numaralandırılmışsa edilecek olan Via KnockoutJS sonunda bu ekran görüntüsünde bu hataya yol

/** 
* 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'), '2000', function() use ($query){ 
     return $query; 
    }); 

    return array('query' => $query, 'totalPages' => $totalPages, 'totalItems' => $count); 
} 

Hata yukarıdaki kodu ve bu koda yönlendirir TaggedFile Cache Error

özellikle

/** 
* 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), 0, 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 adlı bir özel önbellek sürücüsü kullanıyorum. Bu, L4'te iyi çalıştı ancak hatalarla karşılaştı çünkü bazı dosyalar Önbellek Alias ​​içinde kaldırıldı. StoreInterface gibi. Bunun için biraz yardım alabilir miyim? Eğer bir şey göndermeme ihtiyacın varsa, yapacağım.

Diğer Öğeler:

ben global.php içinde taggedFile Sürücü Kayıt için bu kullanılan Önce: Tam olarak bu koymak nerede bilmiyorum

Cache::extend('taggedFile', function($app) 
{ 
    return new Illuminate\Cache\Repository(new Lib\Extensions\TaggedFileCache); 
}); 

. Bunun eşdeğer olduğunu bilen var mı? bu yüzden elle sorunun ne olduğunu bulmak ....

Bu satıcı klasörüne gitmeye karar

Call to undefined method Illuminate\Support\Facades\Cache::extend() 

Bu

L4 çalışmak için kullandı: Ben AppServiceProvider koyarak denedim ama bir hata söyleyerek geldi sadece vardı: getFacadeAccessor (Hangi L4 sadece vardı ama çalıştı uzatılmış) Bu yüzden getFacadeAccessor kullanmaya karar verdim ve işe yaradı, ama çözüm olup olmadığını bilmiyorum. Eğer bir $ anahtar değeri olarak bir dizi geçiyoruz fark gibi

cevap

0

, güvenli yolu

$parts = array_slice(str_split($hash = md5(json_encode($key)), 2), 0, 2); 

NB ile kodu

$parts = array_slice(str_split($hash = md5($key), 2), 0, 2); 

değiştirmek şeklinde olur: Ben hangi sürümü emin değilim php çalıştırıyorsunuz, ama json_encode (...) normalde daha hızlı seri hale getiriyor (...)