Comment utiliser la mise en cache de requêtes dans yii2 ActiveRecord
Je cite le guide:
`Requête de mise en cache est un spécial fonctionnalité de mise en cache construite sur le toit de la mise en cache des données. Il est prévu de mettre en cache le résultat de requêtes de base de données.
Requête de mise en cache nécessite une connexion DB et un cache valide composant de l'application. L'utilisation de base de la requête de mise en cache est comme suit, en supposant que $db est un yii\db\Connexion exemple:
$result = $db->cache(function ($db) {
//the result of the SQL query will be served from the cache
//if query caching is enabled and the query result is found in the cache
return $db->createCommand('SELECT * FROM customer WHERE id=1')->queryOne();
});
`
Je ne pense pas que je vais créer manuellement db connection dans les classes AR. Alors, comment faire cela dans ma AR modèles ?
J'ai demandé à la même question sur yii2 forum mais je n'ai obtenu aucune réponse. Il semble que les gens ne savent pas comment faire une requête de mise en cache dans l'Enregistrement Actif.
OriginalL'auteur black-room-boy | 2015-01-14
Vous devez vous connecter pour publier un commentaire.
Yii 2 exige maintenant que les fermetures à envelopper la requête. AR fait une requête, éventuellement, de sorte que vous pouvez mettre dans la fermeture. Dans une classe AR, obtenir la db et envelopper la requête que vous souhaitez utiliser. La clôture a une signature function($db) et vous avez généralement besoin d'accéder à plusieurs variables, il faut donc ajouter utilisation($variable) de faire des variables visibles à l'intérieur de la clôture.
Si vous écrivez à la db, le cache ci-dessus ne savent pas à ce sujet jusqu'à ce que la durée de cache expire. Afin de dépendance doit être ajouté à la fonction cache à dire quand à invalider le cache. La dépendance devient compliqué vite...
http://www.yiiframework.com/doc-2.0/yii-caching-dependency.html
OriginalL'auteur JimHansen
peut-être que cela aide: yii2 questions sur github
OriginalL'auteur TomaszKane