Nếu tôi đang sử dụng truy vấn mà không queryBuilder với DQL nàyDoctrine2 Nhiều Tham gia làm việc với createQuery nhưng không phải với queryBuilder
$query = $this->_em
->createQuery("SELECT p, g, c
FROM LikeYeah\GoBundle\Entity\Product p
JOIN p.garments g
LEFT JOIN g.colours c
ORDER BY p.id DESC
");
mọi thứ đều tốt, nhưng nếu tôi sử dụng (những gì I belive là như nhau) máng truy vấn xây dựng truy vấn như thế này
$qb->select('p, g, c')
->from('LikeYeah\GoBundle\Entity\Product', 'p')
->join('p.garments', 'g')
->leftJoin('g.colours', 'c')
->orderBy('p.id', 'desc');
tôi nhận được lỗi sau:
"lỗi ngữ nghĩa] dòng 0, col 66 gần' .colours c, LikeYeah \ GoBundle \ Entit y \ Product ': Lỗi: Biến số nhận dạng g được sử dụng trong biểu thức đường dẫn nối nhưng không được xác định trước đó. "
Tôi đang thiếu gì?
Tôi không thể nhìn thấy 'tham gia' trong tài liệu hướng dẫn, có 'leftJoin' và 'innerJoin' mà thôi. Có lẽ vấn đề là 'tham gia' của bạn thực sự là một leftJoin và đối với một số hàng nó không xác định 'g' gây ra không có gì để tham gia .... –
Wojciech, đó không phải là nó, QueryBuilder có một phương pháp có tên ' 'join()' 'về cơ bản là một bí danh của' 'innerJoin()' '. – Quentin