Tôi đang sử dụng MySQL với Zend Framework & thuyết 2. Tôi nghĩ rằng ngay cả khi bạn không sử dụng Doctrine 2, bạn sẽ được làm quen với các lỗi nhưLàm thế nào để gỡ rối các truy vấn MySQL/Doctrine2?
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
Vấn đề là tôi không thấy truy vấn đầy đủ. Nếu không có một khuôn khổ ORM, tôi có thể có thể lặp lại sql một cách dễ dàng, nhưng với một khung công tác, làm thế nào tôi có thể tìm ra SQL mà nó đang cố thực thi? Tôi thu hẹp lỗi xuống
$progress = $task->getProgress();
$progress
được khai báo
// Application\Models\Task
/**
* @OneToMany(targetEntity="TaskProgress", mappedBy="task")
* @OrderBy({"seq" = "ASC"})
*/
protected $progress;
Trong MySQL, lớp nhiệm vụ trông giống như
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$$
Nếu bạn có một đối tượng truy vấn Doctrine, đó là không rõ ràng trong các mã bạn đã đăng, bạn có thể chạy '$ query-> getSqlQuery() 'để xem SQL. Tìm đối tượng truy vấn của bạn trong mã của bạn và xuất nó để xem những gì đang diễn ra. Hoặc bạn có thể bật đăng nhập truy vấn trong SQL để xem nó là gì. – thetaiko