gpt4 book ai didi

php - 如何调试 MySQL/Doctrine2 查询?

转载 作者:IT老高 更新时间:2023-10-28 23:46:13 25 4
gpt4 key购买 nike

我正在使用Zend Framework和Doctrine 2的MySQL。我认为即使您不使用学说2,您也会熟悉

等错误

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

问题是我看不到完整查询。如果没有ORM框架,我可能可以轻松地回荡SQL,但是有了一个框架,我该如何找出它试图执行的SQL?我将错误缩小到

$progress = $task->getProgress();

$ progress 被声明

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

在MySQL中,任务类看起来像

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$$

最佳答案

最简单的解决方案,用于在学说2中调试查询:

$em->getConnection()
->getConfiguration()
->setSQLLogger(new \Doctrine\DBAL\Logging\EchoSQLLogger())
;

关于php - 如何调试 MySQL/Doctrine2 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4570608/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com