Khung công tác symfony có tệp ứng dụng/bảng điều khiển có thể được thực thi qua php để thực hiện một số tác vụ bảo trì. Nó cho phép người dùng chạy truy vấn DQL:Học thuyết sẽ không cho phép tôi chọn các trường cụ thể
# php app/console doctrine:query:dql --hydrate=array \
'SELECT u.id, u.nameFirst, u.nameLast FROM DatabaseBundle:User u'
array
0 =>
array
'id' => string '1' (length=1)
'nameFirst' => string 'jaroslav' (length=8)
'nameLast' => string 'rakhmatoullin' (length=13)
1 =>
array
'id' => string '2' (length=1)
'nameFirst' => string 'Båb Kåre' (length=10)
'nameLast' => string 'Ytrefoss' (length=8)
Quan sát rằng tôi đã chọn ba cột cụ thể. Vấn đề tôi gặp phải là một truy vấn tương tự cho tôi một lỗi khi hai bảng được nối.
# php app/console doctrine:query:dql --hydrate=array \
'SELECT u.id , r FROM DatabaseBundle:User u JOIN u.roles r'
[Doctrine\ORM\Query\QueryException]
[Semantical Error] line 0, col -1 near 'SELECT u.id ,':
Error: Cannot select entity through identification variables
without choosing at least one root entity alias.
Lợi nhuận sau toàn bộ người sử dụng tham gia với vai trò của mình:
# php app/console doctrine:query:dql --hydrate=array \
'SELECT u, r FROM DatabaseBundle:User u JOIN u.roles r'
Rõ ràng, tôi là thiếu một cái gì đó.
Bất kỳ ý tưởng nào? Tôi cũng sẽ đánh giá cao các liên kết đến các tài liệu thích hợp (về vấn đề cụ thể này).
Tôi không hiểu được thông báo lỗi rất tốt, nhưng tôi nhớ lại trải qua các thông báo lỗi tương tự, và giải quyết vấn đề của tôi bằng cách chọn r.id, vì vậy tôi nghĩ rằng bạn nên cố gắng chọn nhiều lĩnh vực. – greg0ire
thì sao? ''SELECT u.id, r. * FROM DatabaseBundle: Người dùng u JOIN u.roles r'' – jere
greg0ire đúng. tôi nghĩ bạn không thể chọn một trường duy nhất VÀ một đối tượng "thực thể" trong một truy vấn như vậy. – jere