Magento: Comment obtenir de requête SQL de Produit de la charge?
Qu'est-ce que l'ensemble de la requête SQL pour le produit de la charge?
Je veux dire, comment faire pour obtenir l'ensemble de la requête SQL pour ce code:-
$productId = 52;
$product = Mage::getModel('catalog/product')->load($productId);
Je sais, nous pouvons obtenir la requête SQL pour objet de collection à travers printLogQuery. Exemple:-
$collection = Mage::getModel('catalog/product')->getCollection();
$collection->printLogQuery(true);
Je ne pouvais pas trouver un tel produit load(). Une idée?
Vous devez vous connecter pour publier un commentaire.
load()
est en fait la méthode à exécuter une requête dans la base de données. Pour cette raison, il n'y a pas d'option pour "trouver un tel produitload()
". Dernière requête est générée avantload()
méthode.Additionaly, méthode la plus simple pour obtenir la requête sur l'écran, par exemple, est (votre exemple):
->__toString()
lorsque vous l'écho. Si elle est définie dans la classe, alors il est automatiquement appelée lors de l'écho. De même, vous pouvez faire ceci:$sql = (string)$collection->getSelect()
. Le(string)
également les résultats dans un appel automatique à__toString()
Vous pouvez vider le réel de la requête via
Pour activer le Débogage SQL,
Aller à
modifier la ligne 98
à
Il va écrire de SQL directement à la valeur de la ligne 126
Peut-être vous pouvez bénéficier de la journalisation de toutes les requêtes pour un chargement de la page.
Reportez-vous à l'article suivant pour plus d'info:
http://blogs.ifuelinteractive.com/2009/10/18/logging-all-sql-in-magento/
Il n'y a pas juste une question pour le produit de la charge.
Prendre un coup d'oeil à la
load()
méthode de laMage_Eav_Model_Entity_Abstract
classe pour voir comment ça fonctionne.Bien $produit n'a pas d' ->getSelect() la méthode mais d'une collection ne nous pouvons solution de contournement en faisant
Qui se fera l'écho de
Pour voir ce que toutes les requêtes obtenir tiré lors d'un appel ->load() la méthode sur tout modal. Mieux vérifier dans mysql.le fichier de log. Vérifiez votre mysql loggin est activé ou Ajouter ceci dans mon.cnf et ensuite redémarrer le serveur MySQL:
La plupart du temps, ces deux lignes sont commentées ou non preset mieux vérifier dans d'autres conf aussi comme mon.conf, mysql.conf etc. Aussi de temps en temps pour vider ce fichier ou sa taille, sa croissance est très rapide pourrait prendre plus de mémoire sur le serveur.
Cheers!