Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Không thể chuyển đổi truy vấn MySql bằng học thuyết DQL hoặc QueryBuilder

Đây là một trong những tình huống mà Doctrine ORM có thể sẽ gây ra cho bạn nhiều vấn đề hơn là nó giải quyết được. Bạn có thể:

  1. Sử dụng truy vấn gốc ResultSetMapping có liên quan thiết lập
  2. Cấu trúc lại truy vấn SQL của bạn thành một thứ gì đó mà Doctrine có thể xử lý trong DQL. Nhìn vào truy vấn bạn có, có một số cách khác nhau mà bạn có thể thực hiện (ví dụ:coi truy vấn con như một bảng tạm thời trong phần FROM / JOIN) nhưng tôi không thể thấy cách nào mà Doctrine DQL sẽ cho phép
  3. Chỉ cần sử dụng SQL đơn giản bằng Doctrine DBAL. Có vẻ như bạn đang sử dụng $this->_em điều này khiến tôi nghĩ rằng bạn đang ở trong một EntityRepository , vì vậy bạn có thể làm:$this->_em->getConnection() để nhận Kết nối DBAL sau đó chỉ cần thực hiện $conn->query() . Rõ ràng theo cách này, bạn sẽ mất đi lợi ích của ORM (bất khả tri cơ sở dữ liệu, v.v.) nhưng bạn có thể coi ORM là có thuế thực hiện các truy vấn phức tạp.

Tôi hiểu không có điều nào trong số này là lý tưởng nhưng từ kinh nghiệm, đôi khi tốt hơn nên đẩy Doctrine ORM ra khỏi con đường để đạt được những gì bạn cần.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm tròn ngày giờ MYSQL thành khoảng thời gian sớm nhất 15 phút tính bằng mili giây (PHP)

  2. TẢI DỮ LIỆU ĐỊA PHƯƠNG INFILE Vấn đề MySQL / PHP

  3. Kết nối với cơ sở dữ liệu của bên thứ 3 trong Joomla?

  4. Làm thế nào để thực thi nhiều truy vấn SQL trong MySQL Workbench?

  5. Có bảo mật trong Hệ thống API | PHP cuRL