Comment déboguer MySQL/Doctrine2 Requêtes?

Je suis de l'utilisation de MySQL avec Zend Framework & Doctrine 2. Je pense que même si vous n'utilisez pas de Doctrine 2, vous serez familier avec des erreurs comme

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ASC' at line 1

Le problème est que je ne vois pas la totalité de la requête. Sans un ORM, je pourrais sans doute l'écho de la sql facilement, mais avec un cadre, comment puis-je savoir ce que SQL son en essayant de les exécuter? J'ai réduit l'erreur en bas à

$progress = $task->getProgress();

$progress est déclaré

//Application\Models\Task
/**
 * @OneToMany(targetEntity="TaskProgress", mappedBy="task")
 * @OrderBy({"seq" = "ASC"})
 */
protected $progress;

Dans MySQL, le groupe de classe ressemble à

CREATE TABLE `tasks` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `owner_id` int(11) DEFAULT NULL,
  `assigned_id` int(11) DEFAULT NULL,
  `list_id` int(11) DEFAULT NULL,
  `name` varchar(60) NOT NULL,
  `seq` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `tasks_owner_id_idx` (`owner_id`),
  KEY `tasks_assigned_id_idx` (`assigned_id`),
  KEY `tasks_list_id_idx` (`list_id`),
  CONSTRAINT `tasks_ibfk_1` FOREIGN KEY (`owner_id`) REFERENCES `users` (`id`),
  CONSTRAINT `tasks_ibfk_2` FOREIGN KEY (`assigned_id`) REFERENCES `users` (`id`),
  CONSTRAINT `tasks_ibfk_3` FOREIGN KEY (`list_id`) REFERENCES `lists` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1$$
  • Si vous avez une Doctrine, à la requête de l'objet, qui n'est pas clair dans le code que vous avez posté, vous pouvez exécuter $query->getSqlQuery() pour voir le SQL. Trouvez votre objet de requête dans votre code et de sortie pour voir ce qui se passe. Alternativement, vous pouvez activer la journalisation des requêtes en SQL pour voir ce que c'est.
InformationsquelleAutor Jiew Meng | 2010-12-31