Lưu ý: Đây là một hạn chế ORM reported on the project's issue trackerDoctrine2: Arbitrary tham gia và đơn bảng thừa kế
Tôi đang phải đối mặt với một vấn đề xây dựng một DQL truy vấn bằng cách sử dụng tham gia cú pháp tùy tiện giới thiệu trong thuyết 2.3 trên một lớp thực thể đó là gốc của một hệ thống phân cấp.
Với những lớp:
A - không thừa kế
B1 - trừu tượng, thư mục gốc của một hệ thống phân cấp, cột phân biệt được đặt tên là 'loại'
tôi thiết lập một nhà xây dựng truy vấn như này:
$qb->select('a.id AS idA, b.id AS idB')
->from('\Entity\A', 'a')
->leftJoin('\Entity\B1', 'b', \Doctrine\ORM\Query\Expr\Join::WITH, 'a.something=b.something');
Và học thuyết SQL tạo ra là một cái gì đó như thế này:
SELECT a.id, b.id FROM a LEFT JOIN b ON (a.something=b.something) WHERE b.type IN ('1', '2', '3')
Những vấn đề đó là nơi làm cho trái tham gia vô dụng.
Có cách nào để buộc điều kiện trên cột phân biệt đối xử được đặt trong kết nối không? Ít nhất điều đó sẽ làm cho nó ...
Tôi có nên điền vào báo cáo lỗi không?
Vâng, tôi muốn lấy tất cả các yếu tố A, ngay cả những người không có bất kỳ B vì vậy một bên tham gia sẽ không giúp đỡ. Trên thực tế, hành vi hiện tại cũng giống như tôi đã sử dụng một phép nối bên trong vì điều kiện nơi trên cột b.type. – Jay