2017-05-22 1 views
3

Comment effacer ce cache des données actuelles?Comment effacer le cache dans yii2 AR?

$result = Customer::getDb()->cache(function ($db) use ($id) { 
    return Customer::findOne($id); 
}, 60 * 60 * 24 * 4); 

Je veux effacer le cache des données actuelles dans la mise à jour client après

Répondre

3

Vous pouvez modifier ce code pour utiliser le cache de données au lieu de cache de requête afin que vous puissiez utiliser la touche unique.

$data = $cache->get('customer' . $id); 
if ($data === false) { 
    $data = Customer::findOne($id); 
    $cache->set('customer' . $id, $data, 60 * 60 * 24 * 4); 
} 

ou à partir de 2.0.11:

$data = $cache->getOrSet('customer' . $id, function() use ($id) { 
    return Customer::findOne($id); 
}, 60 * 60 * 24 * 4); 

Ainsi, vous pouvez maintenant utiliser

$cache->delete('customer' . $id); 
+0

thnx, ça marche) – lolka

0

vous pouvez utiliser pour flush mondiale.

Yii::$app->cache->flush(); 

vous pouvez utiliser TagDependency:

$result = Customer::getDb()->cache(function ($db) use ($id) { 
    return Customer::findOne($id); 
}, 60 * 60 * 24 * 4, new TagDependency(['tags'=>'customer'])); 

//to flush 
TagDependency::invalidate(Yii::$app->cache, 'customer'); 

Pour plus d'informations, consultez here

+0

Est-ce que vous a aidé? @lolka – lalithkumar

+0

Ai-je bien compris? pour $ id courant, je peux ajouter 'new TagDependency (['tags' => 'client-'. $ id]', et ensuite flush 'TagDependency :: invalidate (Yii :: $ app-> cache, 'client-' . $ id); ' – lolka

+0

avez-vous essayé comme ça? – lalithkumar